AWS Fargate 프로파일 - Amazon EKS

AWS Fargate 프로파일

중요

Amazon EKS가 있는 AWS Fargate은 AWS GovCloud(미국 동부) 및 AWSGovCloud(미국 서부)를 제외한 모든 Amazon EKS 지역에서 사용할 수 있습니다.

클러스터의 Fargate에 Pods를 예약하려면 먼저 포드가 시작될 때 Fargate를 사용할 Pods를 지정하는 Fargate 프로파일을 하나 이상 정의해야 합니다.

관리자는 Fargate 프로파일을 사용하여 Fargate에서 실행되는 Pods를 선언할 수 있습니다. 프로파일의 셀렉터를 통해 이 작업을 수행할 수 있습니다. 각 프로파일에 최대 5개의 셀렉터를 추가할 수 있습니다. 각 셀렉터에 네임스페이스를 포함해야 합니다. 레이블도 셀렉터에 포함될 수 있습니다. 레이블 필드는 여러 개의 선택적 키-값 페어로 구성됩니다. 셀렉터와 일치하는 포드는 Fargate에 예약되어 있습니다. 포드는 선택기에 지정된 네임스페이스와 레이블을 사용하여 일치됩니다. 네임스페이스 셀렉터가 레이블 없이 정의되면 Amazon EKS는 프로파일을 사용하여 해당 네임스페이스에서 실행되는 모든 Pods를 Fargate에 예약하려고 시도합니다. 예약할 Pod가 Fargate 프로파일의 셀렉터와 일치하는 경우 해당 Pod가 Fargate에 예약됩니다.

Pod가 여러 Fargate 프로파일과 일치하는 경우 Pod 사양에 다음 Kubernetes 레이블 eks.amazonaws.com/fargate-profile: my-fargate-profile을 추가하여 Pod가 사용하는 프로파일을 지정할 수 있습니다. Pod는 Fargate에 예약할 해당 프로파일의 셀렉터와 일치해야 합니다. Kubernetes 선호도/반선호도 규칙은 Amazon EKS Fargate Pods에 적용되지 않으며 필요하지 않습니다.

Fargate 프로파일을 생성할 때 Pod 실행 역할을 지정해야 합니다. 이 실행 역할은 프로파일을 사용하여 Fargate 인프라에서 실행되는 Amazon EKS 구성 요소를 위한 것입니다. 이 역할은 권한 부여를 위해 클러스터의 Kubernetes 역할 기반 액세스 컨트롤(RBAC)에 추가됩니다. 이렇게 하면 Fargate 인프라에서 실행되는 kubelet이 Amazon EKS 클러스터에 등록되어 클러스터에 노드로 표시될 수 있습니다. 또한 Pod 실행 역할은 Amazon ECR 이미지 리포지토리에 대한 읽기 액세스를 허용하는 Fargate 인프라에 대한 IAM 권한을 제공합니다. 자세한 내용은 Amazon EKS Pod 실행 IAM 역할 단원을 참조하십시오.

Fargate 프로파일은 변경할 수 없습니다. 그러나 업데이트된 프로파일을 새로 생성하여 기존 프로파일을 바꾼 다음 원본을 삭제할 수 있습니다.

참고

Fargate 프로파일을 사용하여 실행 중인 모든 Pods는 중지되고 프로파일이 삭제되면 보류 상태로 전환됩니다.

클러스터의 Fargate 프로파일이 DELETING 상태인 경우 해당 클러스터에 다른 프로파일을 생성하려면 Fargate 프로파일이 삭제될 때까지 기다려야 합니다.

Amazon EKS 및 Fargate는 Fargate 프로파일에 정의된 각 서브넷에 Pods를 분산시킵니다. 그러나 고르게 분산되지 않을 수 있습니다. 고른 분산이 필요한 경우 Fargate 프로파일을 2개 사용합니다. 복제본을 2개 배포하려고 하고 가동 중지를 원하지 않는 경우 고른 분산이 중요합니다. 각 프로파일에는 서브넷이 하나만 있는 것이 좋습니다.

Fargate 프로파일 구성 요소

다음 구성 요소는 Fargate 프로파일에 포함되어 있습니다.

포드 실행 역할

클러스터가 AWS Fargate에 Pods를 생성하는 경우 Fargate 인프라에서 실행 중인 kubelet이 사용자를 대신하여 AWS API를 호출해야 합니다. 예를 들어, Amazon ECR에서 컨테이너 이미지를 가져오기 위해 호출해야 합니다. Amazon EKS Pod 실행 역할은 이 작업을 수행할 수 있는 IAM 권한을 제공합니다.

Fargate 프로파일을 생성할 때 Pod와 함께 사용할 Pods 실행 역할을 지정해야 합니다. 이 역할은 권한 부여를 위해 클러스터의 Kubernetes 역할 기반 액세스 컨트롤(RBAC)에 추가됩니다. 이렇게 하면 Fargate 인프라에서 실행 중인 kubelet이 Amazon EKS 클러스터에 등록되어 클러스터에 노드로 표시될 수 있습니다. 자세한 내용은 Amazon EKS Pod 실행 IAM 역할 단원을 참조하십시오.

서브넷

이 프로파일을 사용하는 Pods를 시작할 서브넷의 ID입니다. 현재 Fargate에서 실행 중인 Pods에는 퍼블릭 IP 주소가 할당되지 않습니다. 따라서 이 파라미터에 대해서는 인터넷 게이트웨이로 가는 직접 경로가 없는 프라이빗 서브넷만 허용됩니다.

선택기

이 Fargate 프로파일을 사용하기 위해 Pods에 대해 일치시킬 선택기입니다. Fargate 프로파일에 선택기를 최대 5개까지 지정할 수 있습니다. 셀렉터에는 다음 구성 요소가 있습니다.

  • 네임스페이스 - 셀렉터에 대한 네임스페이스를 지정해야 합니다. 셀렉터는 이 네임스페이스에서 생성된 Pods만 일치시킵니다. 그러나 여러 셀렉터를 생성하여 여러 네임스페이스를 대상으로 지정할 수 있습니다.

  • 레이블 - 선택적으로 셀렉터에 대해 일치시킬 Kubernetes 레이블을 지정할 수 있습니다. 셀렉터는 셀렉터에 지정된 모든 레이블이 있는 Pods와 일치합니다.

Fargate 프로파일 와일드카드

Kubernetes에서 허용하는 문자 외에도 네임스페이스, 레이블 키 및 레이블 값에 대한 선택기 기준에 *?를 사용할 수 있습니다.

  • *는 없음, 하나 또는 여러 문자를 나타냅니다. 예를 들어, prod*prodprod-metrics를 나타낼 수 있습니다.

  • ?는 단일 문자를 나타냅니다. 예를 들어, value?valuea를 나타낼 수 있습니다. 그러나 ?는 정확히 하나의 문자만 나타낼 수 있기 때문에 valuevalue-a를 나타낼 수는 없습니다.

이러한 와일드카드 문자는 모든 위치에서 조합하여 사용할 수 있습니다(예: prod*, *devfrontend*?). 다른 와일드카드와 패턴 일치 형식(정규식 등)은 지원되지 않습니다.

Pod 사양의 네임스페이스 및 레이블에 대해 일치하는 프로파일이 여러 개 있는 경우 Fargate는 프로파일 이름별 영숫자 정렬을 기준으로 프로파일을 선택합니다. 예를 들어, 프로파일 A(이름 beta-workload)와 프로파일 B(이름 prod-workload)에 시작할 Pods에 대해 일치하는 선택기가 있는 경우 Fargate는 Pods에 대해 프로파일 A(beta-workload)를 선택합니다. 프로파일 A로 Pods의 레이블이 지정됩니다(예: eks.amazonaws.com/fargate-profile=beta-workload).

와일드카드를 사용하는 새 프로파일로 기존 Fargate Pods를 마이그레이션하려는 경우 다음 두 가지 방법이 있습니다.

  • 일치하는 셀렉터로 새 프로파일을 생성한 다음 이전 프로파일을 삭제합니다. 이전 프로파일로 레이블이 지정된 포드는 일치하는 새 프로파일로 다시 예약됩니다.

  • 워크로드를 마이그레이션하고 싶지만 각 Fargate Pod에 어떤 Fargate 레이블이 있는지 확실하지 않은 경우 다음 방법을 사용할 수 있습니다. 동일한 클러스터의 프로파일 중에서 영숫자순으로 먼저 정렬되는 이름으로 새 프로파일을 생성합니다. 그런 다음 새 프로파일로 마이그레이션해야 하는 Fargate Pods를 재활용합니다.

Fargate 프로파일 생성

이 주제에서는 Fargate 프로파일을 생성하는 방법을 설명합니다. 또한 Fargate 프로파일에 사용할 Pod 실행 역할을 생성해야 합니다. 자세한 내용은 Amazon EKS Pod 실행 IAM 역할 섹션을 참조하세요. Fargate에서 실행되는 Pods는 인터넷 게이트웨이에 대한 직접 경로가 없고 AWS 서비스에 대한 NAT 게이트웨이 액세스 권한이 있는 프라이빗 서브넷에서만 지원됩니다. 이를 위해서는 클러스터의 VPC에 사용 가능한 프라이빗 서브넷이 있어야 합니다. eksctl 또는 AWS Management Console을 사용하여 프로파일을 생성할 수 있습니다.

이 절차에는 eksctl 버전 0.172.0 이상이 필요합니다. 버전은 다음 명령을 통해 확인할 수 있습니다.

eksctl version

eksctl 설치 또는 업데이트에 대한 지침은 eksctl 설명서의 Installation을 참조하세요.

eksctl
eksctl를 사용하여 Fargate 프로파일을 생성하려면

다음 eksctl 명령으로 Fargate 프로파일을 생성하고 모든 example value를 고유한 값으로 바꿉니다. 네임스페이스를 지정해야 합니다. 그러나 --labels 옵션은 필요하지 않습니다.

eksctl create fargateprofile \ --cluster my-cluster \ --name my-fargate-profile \ --namespace my-kubernetes-namespace \ --labels key=value

my-kubernetes-namespacekey=value 레이블에 특정 와일드카드를 사용할 수 있습니다. 자세한 내용은 Fargate 프로파일 와일드카드 단원을 참조하십시오.

AWS Management Console
AWS Management Console에서 클러스터용 Fargate 프로파일을 생성하려면
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. Fargate 프로파일을 생성할 클러스터를 선택합니다.

  3. 컴퓨팅(Compute) 탭을 선택합니다.

  4. [Fargate 프로파일(Fargate profiles)]에서 [Fargate 프로파일 추가(Add Fargate profile)]를 선택합니다.

  5. Fargate 프로파일 구성(Configure Fargate profile) 페이지에서 다음을 수행합니다.

    1. 이름(Name)에 Fargate 프로파일(예: my-profile)의 고유한 이름을 입력합니다.

    2. 포드 실행 역할(Pod execution role)에서 Fargate 프로파일과 함께 사용할 Pod 실행 역할을 선택합니다. eks-fargate-pods.amazonaws.com 서비스 보안 주체가 있는 IAM 역할만 표시됩니다. 나열된 역할이 표시되지 않으면 역할을 만들어야 합니다. 자세한 내용은 Amazon EKS Pod 실행 IAM 역할 단원을 참조하십시오.

    3. 선택한 서브넷을 필요에 따라 수정합니다.

      참고

      Fargate에서 실행되는 Pods에는 프라이빗 서브넷만 지원됩니다.

    4. [태그(Tags)]에 선택적으로 Fargate 프로파일에 태그를 지정할 수 있습니다. 이러한 태그는 프로파일과 연결된 다른 리소스(예: Pods)에 전파되지 않습니다.

    5. 다음을 선택합니다.

  6. Pod 선택 구성(Configure pod selection) 페이지에서 다음을 수행합니다.

    1. Namespace(네임스페이스)에 Pods에 대해 일치시킬 네임스페이스를 입력합니다.

      • kube-system 또는 default와 같은 특정 네임스페이스를 사용하여 일치시킬 수 있습니다.

      • 특정 와일드카드(예: prod-*)를 사용하여 여러 네임스페이스(예: prod-deploymentprod-test)를 일치시킬 수 있습니다. 자세한 내용은 Fargate 프로파일 와일드카드 단원을 참조하십시오.

    2. (선택 사항) 셀렉터에 Kubernetes 레이블을 추가합니다. 특히 지정된 네임스페이스의 Pods가 일치해야 하는 포드에 추가합니다.

      • infrastructure: fargate Kubernetes 레이블도 있는 지정된 네임스페이스의 Pods만 선택기와 일치하도록 infrastructure: fargate 레이블을 셀렉터에 추가할 수 있습니다.

      • 특정 와일드카드(예: key?: value?)를 사용하여 여러 네임스페이스(예: keya: valueakeyb: valueb)를 일치시킬 수 있습니다. 자세한 내용은 Fargate 프로파일 와일드카드 단원을 참조하십시오.

    3. Next(다음)를 선택합니다.

  7. 검토 및 생성(Review and create) 페이지에서 Fargate 프로파일에 대한 정보를 검토하고 생성(Create)을 선택합니다.

Fargate 프로파일 삭제

이 주제에서는 Fargate 프로파일을 삭제하는 방법을 설명합니다.

Fargate 프로파일을 삭제하면 해당 프로파일을 사용하여 Fargate에 예약된 모든 Pods가 삭제됩니다. 이러한 Pods가 다른 Fargate 프로파일과 일치하면 해당 프로파일을 사용하여 Fargate에 예약됩니다. Fargate 프로파일과 더이상 일치하지 않으면 Fargate에 예약되지 않고 보류 상태로 남아있을 수 있습니다.

클러스터의 Fargate 프로파일은 한 번에 하나만 DELETING 상태가 될 수 있습니다. Fargate 프로파일이 삭제될 때까지 기다려야 해당 클러스터에서 다른 프로파일을 삭제할 수 있습니다.

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 프로파일을 삭제할 수 있습니다. 프로파일을 삭제하는 데 사용할 도구 이름이 있는 탭을 선택합니다.

eksctl

eksctl를 사용하여 Fargate 프로파일을 삭제하는 방법

다음 명령을 사용하여 클러스터에서 프로파일을 삭제합니다. 모든 example value를 고유한 값으로 바꿉니다.

eksctl delete fargateprofile --name my-profile --cluster my-cluster
AWS Management Console
AWS Management Console에서 클러스터의 Fargate 프로파일을 삭제하려면
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 클러스터를 선택합니다. 목록 클러스터에서 Fargate 프로파일을 삭제할 클러스터를 선택합니다.

  3. 컴퓨팅(Compute) 탭을 선택합니다.

  4. 삭제할 Fargate 프로파일을 선택한 다음 삭제(Delete)를 선택합니다.

  5. Delete Fargate Profile(Fargate 프로파일 삭제) 페이지에서 프로파일 이름을 입력한 다음 Delete(삭제)를 선택합니다.

AWS CLI

AWS CLI를 사용하여 Fargate 프로파일 삭제 방법

다음 명령을 사용하여 클러스터에서 프로파일을 삭제합니다. 모든 example value를 고유한 값으로 바꿉니다.

aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster