클러스터를 위한 AWS Fargate 시작하기
중요
Amazon EKS가 있는 AWS Fargate은 AWS GovCloud(미국 동부) 및 AWS GovCloud(미국 서부)를 제외한 모든 Amazon EKS 지역에서 사용할 수 있습니다.
이 주제에서는 Amazon EKS 클러스터를 사용하여 Pods에서 AWS Fargate 실행을 시작하는 방법을 설명합니다.
CIDR 블록을 사용하여 클러스터의 퍼블릭 엔드포인트에 대한 액세스를 제한하는 경우 프라이빗 엔드포인트 액세스도 사용 설정하는 것이 좋습니다. 이렇게 하면 Fargate Pods가 클러스터와 통신할 수 있습니다. 프라이빗 엔드포인트를 활성화하지 않은 경우, 퍼블릭 액세스에 대해 지정하는 CIDR 블록에는 VPC의 아웃바운드 소스가 포함되어야 합니다. 자세한 내용은 클러스터 API 서버 엔드포인트에 대한 네트워크 액세스 제어 단원을 참조하십시오.
전제 조건
기존 클러스터가 있어야 합니다. Amazon EKS 클러스터가 아직 없는 경우 Amazon EKS 시작하기 부분을 참조하세요.
1단계: 기존 노드가 Fargate Pods와 통신할 수 있는지 확인
노드가 없는 새 클러스터 또는 관리형 노드 그룹을 사용한 노드 수명 주기 간소화 관리형 노드 그룹만 있는 클러스터로 작업하는 경우 2단계: Fargate Pod 실행 역할 생성로 건너뛸 수 있습니다.
이미 연결된 노드가 있는 기존 클러스터로 작업하고 있다고 가정합니다. 이러한 노드의 Pods가 Fargate에서 실행 중인 Pods와 자유롭게 통신할 수 있는지 확인합니다. Fargate에서 실행되는 Pods는 연결된 클러스터에 대해 클러스터 보안 그룹을 사용하도록 자동으로 구성됩니다. 클러스터의 기존 노드가 클러스터 보안 그룹과 트래픽을 주고 받을 수 있는지 확인합니다. 관리형 노드 그룹은 클러스터 보안 그룹도 사용하도록 자동으로 구성되므로 이 호환성을 수정하거나 확인할 필요가 없습니다(참조 관리형 노드 그룹을 사용한 노드 수명 주기 간소화).
eksctl
또는 Amazon EKS 관리형 AWS CloudFormation 템플릿을 사용하여 생성한 기존 노드 그룹의 경우 클러스터 보안 그룹을 노드에 수동으로 추가할 수 있습니다. 또는 노드 그룹에 대한 Auto Scaling 그룹 시작 템플릿을 수정하여 클러스터 보안 그룹을 인스턴스에 연결할 수 있습니다. 자세한 내용은 Amazon VPC 사용 설명서의 인스턴스의 보안 그룹 변경 부분을 참조하세요.
클러스터에 대한 네트워킹(Networking) 섹션의 AWS Management Console에서 해당 클러스터에 대한 보안 그룹을 확인할 수 있습니다. 또는 다음 AWS CLI 명령을 사용하여 확인할 수 있습니다. 이 명령을 사용하는 경우 my-cluster
를 클러스터의 이름으로 바꿉니다.
aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId
2단계: Fargate Pod 실행 역할 생성
클러스터가 AWS Fargate에서 Pods를 생성하는 경우, Fargate 인프라에서 실행되는 구성 요소는 사용자를 대신하여 AWS API를 호출해야 합니다. Amazon EKS Pod 실행 역할은 이 작업을 수행할 수 있는 IAM 권한을 제공합니다. AWS Fargate Pod 실행 역할 생성은 Amazon EKS Pod 실행 IAM 역할을 참조하세요.
참고
--fargate
옵션을 사용하여 eksctl
로 클러스터를 생성한 경우 클러스터에는 이미 패턴 eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL
에서 IAM 콘솔을 찾을 수 있는 Pod 실행 역할이 있습니다. 마찬가지로 eksctl
을 사용하여 Fargate 프로필을 생성하는 경우 Pod 실행 역할이 생성되지 않았으면 eksctl
을 사용하여 포드 실행 역할을 생성합니다.
3단계: 클러스터에 대한 Fargate 프로파일 생성
클러스터의 Fargate에서 실행되는 Pods를 예약하려면 먼저 포드가 시작될 때 Fargate를 사용할 Pods를 지정하는 Fargate 프로파일을 정의해야 합니다. 자세한 내용은 시작 시 AWS Fargate를 사용하는 Pods 정의 단원을 참조하십시오.
참고
--fargate
옵션을 사용하여 eksctl
로 클러스터를 생성한 경우 kube-system
및 default
네임스페이스의 모든 Pods에 대한 선택기를 사용하여 클러스터에 대한 Fargate 프로파일이 이미 생성되어 있습니다. Fargate에서 사용할 다른 네임스페이스에 대한 Fargate 프로필을 생성하려면 다음 절차를 따르세요.
다음 도구 중 하나를 사용하여 Fargate 프로필을 생성할 수 있습니다.
eksctl
이 절차에는 eksctl
버전 0.194.0
이상이 필요합니다. 버전은 다음 명령을 통해 확인할 수 있습니다.
eksctl version
eksctl
설치 또는 업데이트에 대한 지침은 eksctl
설명서의 Installation
eksctl
을 사용하여 Fargate 프로파일을 생성하려면
다음 eksctl
명령으로 Fargate 프로파일을 생성하고 모든 예제 값
을 고유한 값으로 바꿉니다. 네임스페이스를 지정해야 합니다. 그러나 --labels
옵션은 필요하지 않습니다.
eksctl create fargateprofile \ --cluster my-cluster \ --name my-fargate-profile \ --namespace my-kubernetes-namespace \ --labels key=value
my-kubernetes-namespace
및 key=value
레이블에 특정 와일드카드를 사용할 수 있습니다. 자세한 내용은 Fargate 프로파일 와일드카드 단원을 참조하십시오.
AWS Management Console
AWS Management Console을 사용하여 Fargate 프로파일을 생성하려면
-
Amazon EKS 콘솔
을 엽니다. -
Fargate 프로파일을 생성할 클러스터를 선택합니다.
-
컴퓨팅(Compute) 탭을 선택합니다.
-
[Fargate 프로파일(Fargate profiles)]에서 [Fargate 프로파일 추가(Add Fargate profile)]를 선택합니다.
-
Fargate 프로파일 구성(Configure Fargate profile) 페이지에서 다음을 수행합니다.
-
Name(이름)에 Fargate 프로파일의 이름을 입력합니다. 이름은 고유해야 합니다.
-
포드 실행 역할(Pod execution role)에서 Fargate 프로파일과 함께 사용할 Pod 실행 역할을 선택합니다.
eks-fargate-pods.amazonaws.com
서비스 보안 주체가 있는 IAM 역할만 표시됩니다. 나열된 역할이 표시되지 않으면 역할을 만들어야 합니다. 자세한 내용은 Amazon EKS Pod 실행 IAM 역할 단원을 참조하십시오. -
선택한 서브넷을 필요에 따라 수정합니다.
참고
Fargate에서 실행되는 Pods에는 프라이빗 서브넷만 지원됩니다.
-
[태그(Tags)]에 선택적으로 Fargate 프로파일에 태그를 지정할 수 있습니다. 이러한 태그는 프로파일과 연결된 다른 리소스(예: Pods)에 전파되지 않습니다.
-
Next(다음)를 선택합니다.
-
-
Pod 선택 구성(Configure pod selection) 페이지에서 다음을 수행합니다.
-
Namespace(네임스페이스)에 Pods에 대해 일치시킬 네임스페이스를 입력합니다.
-
kube-system
또는default
와 같은 특정 네임스페이스를 사용하여 일치시킬 수 있습니다. -
특정 와일드카드(예:
prod-*
)를 사용하여 여러 네임스페이스(예:prod-deployment
및prod-test
)를 일치시킬 수 있습니다. 자세한 내용은 Fargate 프로파일 와일드카드 단원을 참조하십시오.
-
-
(선택 사항) 셀렉터에 Kubernetes 레이블을 추가합니다. 특히 지정된 네임스페이스의 Pods가 일치해야 하는 포드에 추가합니다.
-
infrastructure: fargate
Kubernetes 레이블도 있는 지정된 네임스페이스의 Pods만 선택기와 일치하도록infrastructure: fargate
레이블을 선택기에 추가할 수 있습니다. -
특정 와일드카드(예:
key?: value?
)를 사용하여 여러 네임스페이스(예:keya: valuea
및keyb: valueb
)를 일치시킬 수 있습니다. 자세한 내용은 Fargate 프로파일 와일드카드 단원을 참조하십시오.
-
-
Next(다음)를 선택합니다.
-
-
검토 및 생성(Review and create) 페이지에서 Fargate 프로파일에 대한 정보를 검토하고 생성(Create)을 선택합니다.
4단계: CoreDNS 업데이트
기본적으로 CoreDNS는 Amazon EKS 클러스터의 Amazon EC2 인프라에서 실행되도록 구성됩니다. 클러스터의 Fargate에서만 Pods를 실행하려면 다음 단계를 수행하세요.
참고
--fargate
옵션을 사용하여 eksctl
로 클러스터를 생성한 경우 다음 단계로 건너뛸 수 있습니다.
-
다음 명령을 사용하여 CoreDNS에 대한 각 Fargate 프로필을 삭제합니다.
my-cluster
를 클러스터 이름으로,111122223333
을 계정 ID로,AmazonEKSFargatePodExecutionRole
을 Pod 실행 역할 이름으로,0000000000000001
,0000000000000002
, 및0000000000000003
을 프라이빗 서브넷의 ID로 바꿉니다. Pod 실행 역할이 없는 경우 먼저 생성해야 합니다(2단계: Fargate Pod 실행 역할 생성 참조).중요
역할 ARN에
/
이외의 경로를 포함할 수 없습니다. 예를 들어, 역할 이름이development/apps/my-role
인 경우 역할에 대한 ARN을 지정할 때 역할 이름을my-role
로 변경해야 합니다. 역할 ARN의 형식은arn:aws:iam::111122223333:role/role-name
이어야 합니다.aws eks create-fargate-profile \ --fargate-profile-name coredns \ --cluster-name my-cluster \ --pod-execution-role-arn arn:aws:iam::111122223333:role/AmazonEKSFargatePodExecutionRole \ --selectors namespace=kube-system,labels={k8s-app=kube-dns} \ --subnets subnet-0000000000000001 subnet-0000000000000002 subnet-0000000000000003
-
다음 명령을 실행하여 CoreDNS Pods에서
eks.amazonaws.com/compute-type : ec2
주석을 제거합니다.kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
다음 단계
-
다음 워크플로를 사용하여 Fargate에서 실행할 기존 애플리케이션 마이그레이션을 시작할 수 있습니다.
-
Fargate 프로파일 생성 애플리케이션의 Kubernetes 네임스페이스 및 Kubernetes 레이블과 일치하는.
-
Fargate에 예약되도록 기존 Pods를 삭제하고 다시 생성합니다. 예를 들어 다음 명령은
coredns
배포의 롤아웃을 트리거합니다. 네임스페이스 및 배포 유형을 수정하여 특정 Pods를 업데이트할 수 있습니다.kubectl rollout restart -n kube-system deployment coredns
-
-
Application Load Balancer를 사용하여 애플리케이션 및 HTTP 트래픽 라우팅를 배포하여 Fargate에서 실행되는 Pods에 대해 인그레스 대상을 허용합니다.
-
Vertical Pod Autoscaler를 사용하여 포드 리소스 조정를 사용하여 Fargate Pods의 올바른 초기 CPU 및 메모리 크기를 설정한 다음 Horizontal Pod Autoscaler를 사용하여 포드 배포 확장를 사용하여 해당 Pods를 조정할 수 있습니다. Vertical Pod Autoscaler가 더 높은 CPU 및 메모리 조합으로 Pods를 Fargate에 자동으로 다시 배포하도록 하려면 Vertical Pod Autoscaler의 모드를
Auto
또는Recreate
로 설정합니다. 이를 통해 기능을 올바르게 사용할 수 있습니다. 자세한 내용은 GitHub에서 Vertical Pod Autoscaler설명서를 참조하세요. -
이러한 지침을 따라 애플리케이션을 모니터링하도록 AWS Distro for OpenTelemetry(ADOT)
컬렉터를 설정할 수 있습니다.