Amazon EKS를 사용하여 AWS Fargate 시작
중요
Amazon EKS가 있는 AWS Fargate은 AWS GovCloud(미국 동부) 및 AWSGovCloud(미국 서부)를 제외한 모든 Amazon EKS 지역에서 사용할 수 있습니다.
이 주제에서는 Amazon EKS 클러스터를 사용하여 Pods에서 AWS Fargate 실행을 시작하는 방법을 설명합니다.
CIDR 블록을 사용하여 클러스터의 퍼블릭 엔드포인트에 대한 액세스를 제한하는 경우 프라이빗 엔드포인트 액세스도 사용 설정하는 것이 좋습니다. 이렇게 하면 Fargate Pods가 클러스터와 통신할 수 있습니다. 프라이빗 엔드포인트를 활성화하지 않은 경우, 퍼블릭 액세스에 대해 지정하는 CIDR 블록에는 VPC의 아웃바운드 소스가 포함되어야 합니다. 자세한 내용은 Amazon EKS 클러스터 엔드포인트 액세스 제어 단원을 참조하십시오.
전제 조건
기존 클러스터가 있어야 합니다. Amazon EKS 클러스터가 아직 없는 경우 Amazon EKS 시작하기 부분을 참조하세요.
기존 노드가 Fargate Pods와 통신할 수 있는지 확인
노드가 없는 새 클러스터 또는 관리형 노드 그룹만 있는 클러스터로 작업하는 경우 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
Fargate Pod 실행 역할 생성
클러스터가 AWS Fargate에서 Pods를 생성하는 경우, Fargate 인프라에서 실행되는 구성 요소는 사용자를 대신하여 AWS API를 호출해야 합니다. Amazon EKS Pod 실행 역할은 이 작업을 수행할 수 있는 IAM 권한을 제공합니다. AWS Fargate Pod 실행 역할을 만들려면 Amazon EKS Pod 실행 IAM 역할 부분을 참조하세요.
참고
--fargate
옵션을 사용하여 eksctl
로 클러스터를 생성한 경우 클러스터에는 이미 패턴 eksctl-
에서 IAM 콘솔을 찾을 수 있는 Pod 실행 역할이 있습니다. 마찬가지로 my-cluster
-FargatePodExecutionRole-ABCDEFGHIJKL
eksctl
을 사용하여 Fargate 프로필을 생성하는 경우 Pod 실행 역할이 생성되지 않았으면 eksctl
을 사용하여 포드 실행 역할을 생성합니다.
클러스터에 대한 Fargate 프로필 생성
클러스터의 Fargate에서 실행되는 Pods를 예약하려면 먼저 포드가 시작될 때 Fargate를 사용할 Pods를 지정하는 Fargate 프로파일을 정의해야 합니다. 자세한 내용은 AWS Fargate 프로파일 단원을 참조하십시오.
참고
--fargate
옵션을 사용하여 eksctl
로 클러스터를 생성한 경우 kube-system
및 default
네임스페이스의 모든 Pods에 대한 선택기를 사용하여 클러스터에 대한 Fargate 프로파일이 이미 생성되어 있습니다. Fargate에서 사용할 다른 네임스페이스에 대한 Fargate 프로필을 생성하려면 다음 절차를 따르세요.
eksctl
또는 AWS Management Console을 사용하여 Fargate 프로필을 생성할 수 있습니다.
업데이트: CoreDNS
기본적으로 CoreDNS는 Amazon EKS 클러스터의 Amazon EC2 인프라에서 실행되도록 구성됩니다. 클러스터의 Fargate에서만 Pods를 실행하려면 다음 단계를 수행하세요.
참고
--fargate
옵션을 사용하여 eksctl
로 클러스터를 생성한 경우 다음 단계로 건너뛸 수 있습니다.
다음 명령을 사용하여 CoreDNS에 대한 각 Fargate 프로필을 삭제합니다.
를 클러스터 이름으로,my-cluster
을 계정 ID로,111122223333
을 Pod 실행 역할 이름으로,AmazonEKSFargatePodExecutionRole
,0000000000000001
,0000000000000002
을 프라이빗 서브넷의 ID로 바꿉니다. Pod 실행 역할이 없는 경우 먼저 하나를 생성해야 합니다.0000000000000003
중요
역할 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에서 실행할 기존 애플리케이션 마이그레이션을 시작할 수 있습니다.
-
애플리케이션의 Kubernetes 네임스페이스 및 Kubernetes 레이블과 일치하는 Fargate 프로필을 생성합니다.
-
Fargate에 예약되도록 기존 Pods를 삭제하고 다시 생성합니다. 예를 들어 다음 명령은
coredns
배포의 롤아웃을 트리거합니다. 네임스페이스 및 배포 유형을 수정하여 특정 Pods를 업데이트할 수 있습니다.kubectl rollout restart -n
kube-system
deployment coredns
-
-
Amazon EKS 애플리케이션 로드 밸런싱를 배포하여 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) Collector를 설정할 수 있습니다.