AWS EKS fargate profile 이란?
목차
AWS 에서 제공하는 fargate orchestration 도구
정의
Fargate Profile은 사용자가 기본 컴퓨팅 인프라를 관리할 필요 없이 컨테이너를 배포하고 관리할 수 있게 해주는 AWS의 새로운 기능입니다. Fargate Profile은 AWS의 컨테이너 오케스트레이션 엔진인 Amazon Elastic Container Service(Amazon ECS)를 활용하여 컨테이너 워크로드의 배포, 확장 및 관리를 자동화합니다. Fargate Profile을 사용하면 사용자는 컨테이너화된 애플리케이션을 위한 보안 환경을 신속하게 생성할 수 있으므로 기본 컴퓨팅 인프라를 관리하는 대신 애플리케이션 코드를 구축하고 배포하는 데 집중할 수 있습니다. 또한 Fargate Profile은 트래픽 패턴을 기반으로 한 자동 라우팅과 같은 고급 로드 밸런싱 기능을 제공합니다. 이를 통해 Fargate 프로필을 사용하여 배포된 애플리케이션을 수요에 따라 자동으로 확장하거나 축소할 수 있습니다.
기능
- 파드 선택자 (Pod Selector): Fargate 프로파일은 특정한 Kubernetes 네임스페이스에 속하는 파드들을 식별하기 위해 파드 선택자를 사용합니다. 이를 통해 프로파일은 어떤 파드들이 Fargate에서 실행되어야 하는지 결정할 수 있습니다.
- 리소스 할당 (Resource Allocation): Fargate 프로파일은 실행될 파드에 대한 CPU 및 메모리 리소스 요청과 제한을 설정할 수 있습니다. 이것은 파드가 실행되는 동안 사용할 수 있는 자원을 제어하는 데 사용됩니다.
- 네트워크 구성 (Networking Configuration): Fargate 프로파일은 파드가 사용할 수 있는 네트워크 구성을 지정할 수 있습니다. 예를 들어, 서브넷, 보안 그룹 등의 설정을 포함할 수 있습니다.
- 권한 설정 (Permissions Setting): Fargate 프로파일은 파드가 실행될 때 사용할 IAM 역할을 지정할 수 있습니다. 이를 통해 파드는 AWS 리소스에 액세스하거나 다른 AWS 서비스와 통신할 수 있습니다.
사용방법
profile을 생성하지 않고 pod를 fargate에 생성이 되지 않는다.
profile을 생성 후 namespace 및 pod를 생성하면 된다.
기본적으로 aws는 eks 생성시 ec2 로 생성하기 때문에 설정을 바꿔줘야고 한다고한다.
kubectl patch deployment coredns \
-n kube-system \
--type json \
-p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
위처럼 metadata를 수정해야하지만
이상하게 안되서 coredns만 restart
유의 사항
- profiile의 셀렉터를 통하여 pods를 선언 할수 있다.
- 각 셀렉터에는 네임스페이스를 포함되어야 한다. 레이블도 포함될수 있다.
- Pod가 여러 Fargate 프로파일과 일치하는 경우 Pod 사양에 다음 Kubernetes 레이블 eks.amazonaws.com/fargate-profile: my-fargate-profile을 추가하여 Pod가 사용하는 프로파일을 지정할 수 있습니다
- Fargate 프로파일을 생성할 때 Pod 실행 역할을 지정해야 합니다.
- Amazon EKS 및 Fargate는 Fargate 프로파일에 정의된 각 서브넷에 Pods를 분산시킵니다. 그러나 고르게 분산되지 않을 수 있습니다.(profile이 홀수개 이거나 몇개 없을때)
- 각 프로파일에는 서브넷이 하나만 있는 것이 좋습니다.
Reference
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/fargate-profile.html
https://overmind.tech/types/fargate-profile