Fargate 활성화
클러스터에서 Fargate에 Pod를 스케줄링하기 전에, 어떤 Pod가 Fargate를 사용할지 지정하는 최소 하나의 Fargate 프로파일을 정의해야 합니다.
관리자는 Fargate 프로파일을 사용하여 어떤 Pod가 Fargate에서 실행될지 선언할 수 있습니다. 이는 프로파일의 셀렉터를 통해 수행할 수 있습니다. 각 프로파일에 최대 5개의 셀렉터를 추가할 수 있습니다. 각 셀렉터에는 네임스페이스와 선택적 레이블이 포함됩니다. 모든 셀렉터에 대해 네임스페이스를 정의해야 합니다. 레이블 필드는 여러 개의 선택적 키-값 쌍으로 구성됩니다. 셀렉터와 일치하는 Pod는 Fargate에 스케줄링됩니다. Pod는 네임스페이스와 셀렉터에 지정된 레이블을 사용하여 매칭됩니다. 네임스페이스 셀렉터가 레이블 없이 정의된 경우, Amazon EKS는 해당 네임스페이스에서 실행되는 모든 Pod를 프로파일을 사용하여 Fargate에 스케줄링하려고 시도합니다. 스케줄링될 Pod가 Fargate 프로파일의 셀렉터 중 하나와 일치하면, 해당 Pod는 Fargate에 스케줄링됩니다.
Pod가 여러 Fargate 프로파일과 일치하는 경우, Pod 스펙에 다음 Kubernetes 레이블을 추가하여 Pod가 사용할 프로파일을 지정할 수 있습니다: eks.amazonaws.com/fargate-profile: my-fargate-profile. Pod는 Fargate에 스케줄링되기 위해 해당 프로파일의 셀렉터와 일치해야 합니다. Kubernetes affinity/anti-affinity 규칙은 Amazon EKS Fargate Pod에는 적용되지 않으며 필요하지 않습니다.
EKS 클러스터에 Fargate 프로파일을 추가하는 것부터 시작하겠습니다. 아래 명령은 다음 특성을 가진 checkout-profile이라는 Fargate 프로파일을 생성합니다:
checkout네임스페이스에서fargate: yes레이블을 가진 Pod를 대상으로 함- Pod를 VPC의 프라이빗 서브넷에 배치
- Fargate 인프라에 IAM 역할을 적용하여 ECR에서 이미지를 가져오고 CloudWatch에 로그를 작성하는 등의 작업을 수행할 수 있도록 함
다음 명령은 프로파일을 생성하며, 이는 몇 분이 걸립니다:
이제 Fargate 프로파일을 검사할 수 있습니다:
{ "fargateProfile": {"fargateProfileName": "checkout-profile",
"fargateProfileArn": "arn:aws:eks:us-west-2:1234567890:fargateprofile/eks-workshop/checkout-profile/92c4e2e3-50cd-773c-1c32-52e4d44cd0ca",
"clusterName": "eks-workshop",
"createdAt": "2023-08-05T12:57:58.022000+00:00",
"podExecutionRoleArn": "arn:aws:iam::1234567890:role/eks-workshop-fargate",
"subnets": [
"subnet-01c3614cdd385a93c",
"subnet-0e392224ce426565a",
"subnet-07f8a6fda62ec83df"
],
"selectors": [
{"namespace": "checkout",
"labels": {"fargate": "yes"
}
}
],
"status": "ACTIVE",
"tags": {}}
}