Amazon VPC CNI 추가 기능 관리 - Amazon EKS

Amazon VPC CNI 추가 기능 관리

Amazon EKS는 Kubernetes용 Amazon VPC 컨테이너 네트워크 인터페이스(CNI) 플러그인을 통해 기본 VPC 네트워킹을 지원합니다. 이 플러그인을 사용하면 Kubernetes 포드에서 VPC 네트워크에서와 마찬가지로 포드 내 동일한 IP 주소를 보유합니다. 자세한 내용은 섹션을 참조하세요포드 네트워킹(CNI)

Amazon VPC CNI Amazon EKS 추가 기능을 추가하지 않은 1.18 이상 클러스터가 있는 경우 Amazon VPC CNI Amazon EKS 추가 기능 추가의 절차에 따라 추가할 수 있습니다. Amazon VPC CNI Amazon EKS 추가 기능을 추가한 클러스터가 있는 경우 Amazon VPC CNI Amazon EKS 추가 기능 업데이트Amazon VPC CNI Amazon EKS 추가 기능 제거 섹션의 절차를 사용하여 관리할 수 있습니다. Amazon EKS 추가 기능에 대한 자세한 내용은 Amazon EKS 추가 기능 섹션을 참조하세요.

Amazon VPC CNI Amazon EKS 추가 기능을 추가하지 않은 경우, Amazon VPC CNI 자체 관리형 추가 기능이 기본값으로 클러스터에서 계속 실행되고 있습니다. Amazon VPC CNI 자체 관리형 추가 기능 업데이트 섹션의 절차를 사용하여 추가 기능을 업데이트할 수 있습니다.

버전 1.7.5-eksbuild.1은 모든 Kubernetes 버전에 대해 자체 관리형 추가 기능용으로 배포됩니다. 버전 1.7.5-eksbuild.2는 Kubernetes 버전 1.18 이상에 대해 Amazon EKS 추가 기능용으로 배포됩니다.

Prerequisites

Amazon VPC CNI Amazon EKS 추가 기능 추가

버전 1.18 이상 클러스터에 Amazon VPC CNI Amazon EKS 추가 기능을 추가하는 데 사용할 도구 이름이 있는 탭을 선택합니다.

중요

Amazon VPC CNI Amazon EKS 추가 기능을 추가하기 전에 Amazon EKS가 관리를 시작할 설정을 자체 관리하지 않는지 확인하세요. Amazon EKS가 관리하는 설정을 확인하려면 Amazon EKS 추가 기능 구성 섹션을 참조하세요.

eksctl

eksctl을 사용하여 Amazon EKS 추가 기능의 최신 마이너, 패치 및 빌드 버전을 추가하려면

<my-cluster>(<> 포함)를 클러스터 이름으로 바꾸고 arn:aws:iam::<111122223333>:role/<eksctl-my-cluster-addon-iamserviceaccount-kube-sys-Role1-UK9MQSLXK0MW>를 기존 IAM 역할로 바꿉니다(사전 요구 사항 참조).

eksctl create addon \ --name vpc-cni \ --version latest \ --cluster <my-cluster> \ --service-account-role-arn arn:aws:iam::<111122223333>:role/<eksctl-my-cluster-addon-iamserviceaccount-kube-sys-Role1-UK9MQSLXK0MW> \ --force

자체 관리형 추가 기능의 기존 설정과 Amazon EKS 추가 기능 설정이 충돌하는 경우, Amazon EKS 추가 기능의 추가 작업이 실패하고 충돌을 해결하는 데 도움이 되는 오류 메시지가 표시됩니다.

AWS Management Console

AWS Management Console을 사용하여 Amazon EKS 추가 기능의 최신 마이너, 패치 및 빌드 버전을 추가하려면

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [클러스터(Clusters)]를 선택한 다음 Amazon VPC CNI Amazon EKS 추가 기능을 구성할 클러스터의 이름을 선택합니다.

  3. [구성(Configuration) 탭을 선택한 다음 [추가 기능(Add-ons)] 탭을 선택합니다.

  4. [새 항목 추가(Add new)]를 선택합니다.

    • [이름(Name)]에서 vpc-cni를 선택합니다.

    • 사용할 [버전(Version)]을 선택합니다. [최신(Latest)]으로 표시된 버전을 권장합니다.

    • 서비스 계정 역할(Service account role)에서 AmazonEKS_CNI_Policy IAM 정책을 연결한 IAM 역할의 이름을 선택합니다(사전 요구 사항 참조).

    • 클러스터에서 이 추가 기능에 대한 기존 구성 재정의를 선택합니다. 자체 관리형 추가 기능의 기존 설정과 Amazon EKS 추가 기능 설정이 충돌하는 경우, Amazon EKS 추가 기능의 추가 작업이 실패하고 충돌을 해결하는 데 도움이 되는 오류 메시지가 표시됩니다.

    • [추가(Add)]를 선택합니다.

AWS CLI

AWS CLI을 사용하여 Amazon EKS 추가 기능의 최신 마이너, 패치 및 빌드 버전을 추가하려면

  1. 클러스터 버전에 사용할 수 있는 Amazon VPC CNI Amazon EKS 추가 기능 버전을 확인합니다. 다음 명령에서 <my-cluster>(<> 포함)를 클러스터 이름으로 바꿉니다.

    aws eks describe-addon-versions \ --addon-name vpc-cni \ --kubernetes-version <1.21> \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" \ --output text

    결과

    v1.9.1-eksbuild.1 False ... v1.7.5-eksbuild.2 True ...

    아래에 True가 있는 버전은 새 클러스터와 함께 배포된 기본 버전입니다. 이전 출력에서 v1.9.1-eksbuild.1은 사용 가능한 최신 버전입니다.

  2. 다음 명령에서 <my-cluster>(<> 포함)를 클러스터 이름으로, <v1.9.1-eksbuild.1>을 사용 가능한 최신 버전으로, arn:aws:iam::<AWS_ACCOUNT_ID>:role/<AmazonEKSCNIRole>AmazonEKS_CNI_Policy IAM 정책을 연결한 IAM 역할의 ARN으로 바꾼 다음(사전 요구 사항 참조) 명령을 실행합니다.

    aws eks create-addon \ --cluster-name <my-cluster> \ --addon-name vpc-cni \ --addon-version <v1.9.1-eksbuild.1> \ --service-account-role-arn arn:aws:iam::<AWS_ACCOUNT_ID>:role/<AmazonEKSCNIRole> \ --resolve-conflicts OVERWRITE

    자체 관리형 추가 기능의 기존 설정과 Amazon EKS 추가 기능 설정이 충돌하는 경우, Amazon EKS 추가 기능의 추가 작업이 실패하고 충돌을 해결하는 데 도움이 되는 오류 메시지가 표시됩니다.

Amazon VPC CNI Amazon EKS 추가 기능 업데이트

중요

Amazon VPC CNI Amazon EKS 추가 기능을 업데이트하기 전에 Amazon EKS가 관리하는 설정을 자체 관리하지 않는지 확인하세요. Amazon EKS가 관리하는 설정을 확인하려면 Amazon EKS 추가 기능 구성 섹션을 참조하세요.

Amazon VPC CNI Amazon EKS 추가 기능을 업데이트하기 위한 절차입니다. Amazon VPC CNI Amazon EKS 추가 기능을 추가하지 않은 경우, 대신 Amazon VPC CNI 자체 관리형 추가 기능 업데이트 섹션의 설차를 완료합니다. Amazon EKS는 새 버전이 릴리스되거나 새 Kubernetes 마이너 버전으로 클러스터를 업데이트한 후 Amazon VPC CNI 추가 기능을 자동으로 업데이트하지 않습니다. 기존 클러스터에 대한 Amazon VPC CNI 추가 기능을 업데이트하려면, 사용자가 업데이트를 시작합니다. 그러면 Amazon EKS가 추가 기능을 업데이트합니다.

최신 마이너 버전의 경우 최신 빌드 및 패치 버전으로 업데이트하는 것이 좋지만 한 번에 하나의 마이너 버전만 업데이트해야 합니다. 예를 들어 현재 버전이 1.7이고 1.9로 업데이트하려는 경우 먼저 최신 패치 버전 1.8로 업데이트한 다음 최신 패치 버전 1.9로 업데이트해야 합니다.

버전 1.18 이상 클러스터에 Amazon VPC CNI Amazon EKS 추가 기능을 업데이트하는 데 사용할 도구 이름이 있는 탭을 선택합니다.

eksctl

eksctl을 사용하여 Amazon EKS 추가 기능을 최신 마이너, 패치 및 빌드 버전으로 업데이트하려면

  1. vpc-cni Amazon EKS 추가 기능의 최신 버전을 확인합니다. <my-cluster>(<> 포함)을 클러스터 이름으로 바꿉니다.

    eksctl get addon --name vpc-cni --cluster <my-cluster>

    결과

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE vpc-cni v1.7.5-eksbuild.2 ACTIVE 0 arn:aws:iam::<111122223333>:role/<eksctl-my-cluster-addon-iamserviceaccount-kube-sys-Role1-UK9MQSLXK0MW> v1.9.1-eksbuild.1
  2. 추가 기능을 최신 마이너, 패치 및 빌드 버전으로 업데이트합니다.

    eksctl update addon \ --name vpc-cni \ --version latest \ --cluster <my-cluster> \ --force
AWS Management Console

AWS Management Console을 사용하여 Amazon EKS 추가 기능을 최신 마이너, 패치 및 빌드 버전으로 업데이트하려면

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [클러스터(Clusters)]를 선택한 다음 Amazon VPC CNI 추가 기능을 업데이트할 클러스터의 이름을 선택합니다.

  3. [구성(Configuration) 탭을 선택한 다음 [추가 기능(Add-ons)] 탭을 선택합니다.

  4. vpc-cni 상자의 오른쪽 상단에 있는 상자를 선택한 다음 [편집(Edit)]을 선택합니다.

    • 사용하려는 Amazon EKS 추가 기능의 버전을 선택합니다. [최신(Latest)]으로 표시된 버전을 권장합니다.

    • 서비스 계정 역할(Service account role)에서 AmazonEKS_CNI_Policy IAM 정책을 연결한 IAM 역할의 이름을 선택하지 않은 경우 이를 선택합니다(사전 요구 사항 참조).

    • 클러스터에서 이 추가 기능에 대한 기존 구성 재정의를 선택합니다.

    • [업데이트(Update)]를 선택합니다.

AWS CLI

AWS CLI을 사용하여 Amazon EKS 추가 기능을 최신 마이너, 패치 및 빌드 버전으로 업데이트하려면

  1. Amazon VPC CNI Amazon EKS 추가 기능의 최신 버전을 확인합니다. <my-cluster>를 클러스터 이름으로 바꿉니다.

    aws eks describe-addon \ --cluster-name <my-cluster> \ --addon-name vpc-cni \ --query "addon.addonVersion" \ --output text

    결과:

    v1.7.5-eksbuild.2
  2. 클러스터 버전에 사용할 수 있는 Amazon VPC CNI Amazon EKS 추가 기능 버전을 확인합니다. <1.21>을 클러스터 버전으로 바꿉니다.

    aws eks describe-addon-versions \ --addon-name vpc-cni \ --kubernetes-version <1.21> \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" \ --output text

    결과

    v1.9.1-eksbuild.1 False ... v1.7.5-eksbuild.2 True ...

    아래에 True가 있는 버전은 새 클러스터와 함께 배포된 기본 버전입니다. 이전 출력에서 v1.9.1-eksbuild.1은 사용 가능한 최신 버전입니다.

  3. 추가 기능을 이전 출력에서 반환된 최신 마이너 버전의 최신 패치 버전의 최신 빌드 버전으로 업데이트합니다. <my-cluster>(<> 포함)를 클러스터 이름으로, <v1.9.1-eksbuild.1>을 업데이트할 추가 기능 버전으로 바꿉니다.

    aws eks update-addon \ --cluster-name <my-cluster> \ --addon-name vpc-cni \ --addon-version <v1.9.1-eksbuild.1> \ --resolve-conflicts OVERWRITE

Amazon VPC CNI Amazon EKS 추가 기능 제거

Amazon EKS 추가 기능을 제거하는 경우 다음 두 가지 옵션이 있습니다.

  • 클러스터에 추가 기능 소프트웨어 유지(Preserve the add-on's software on your cluster) - 이 옵션을 사용하면 업데이트를 알리고 업데이트를 시작한 후 Amazon EKS 추가 기능을 자동으로 업데이트하는 모든 설정의 Amazon EKS 관리 및 Amazon EKS의 기능을 제거하지만 클러스터에서 추가 기능 소프트웨어는 유지합니다. 이 옵션을 사용하면 추가 기능을 Amazon EKS 추가 기능이 아닌 자체 관리형 추가 기능으로 만들 수 있습니다. 추가 기능에 가동 중지 시간이 발생하지는 않습니다.

  • 클러스터에서 추가 기능 소프트웨어 완전히 제거(Removing the add-on software entirely from your cluster) - 추가 기능이 제공하는 기능에 따라 클러스터에 리소스가 없는 경우에만 클러스터에서 Amazon EKS 추가 기능을 제거해야 합니다. Amazon EKS 추가 기능을 제거한 후 원할 경우 다시 추가할 수 있습니다.

추가 기능에 연결된 IAM 계정이 있는 경우 IAM 계정은 제거되지 않습니다.

버전 1.18 이상 클러스터에 Amazon VPC CNI Amazon EKS 추가 기능을 제거하는 데 사용할 도구 이름이 있는 탭을 선택합니다.

eksctl

eksctl을 사용하여 Amazon EKS 추가 기능을 제거하려면

my-cluster(<> 포함)를 클러스터 이름으로 바꾸고 다음 명령을 실행합니다. --preserve를 제거하면 클러스터에서 추가 기능 소프트웨어를 제거합니다.

eksctl delete addon --cluster <my-cluster> --name vpc-cni --preserve
AWS Management Console

을 사용하여 Amazon EKS 추가 기능을 제거하려면AWS Management Console

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [클러스터(Clusters)]를 선택한 다음 Amazon VPC CNI Amazon EKS 추가 기능을 제거할 클러스터의 이름을 선택합니다.

  3. [구성(Configuration) 탭을 선택한 다음 [추가 기능(Add-ons)] 탭을 선택합니다.

  4. vpc-cni 상자의 오른쪽 상단에서 확인란을 선택한 다음 [제거(Remove)]를 선택합니다. Amazon EKS가 추가 기능에 대한 설정 관리를 중지하되 추가 기능의 모든 설정을 자체 관리할 수 있도록 클러스터에 추가 기능 소프트웨어를 유지하려는 경우 클러스터에 유지를 선택합니다. vpc-cni를 입력한 다음 [제거(Remove)]를 선택합니다.

AWS CLI

을 사용하여 Amazon EKS 추가 기능을 제거하려면AWS CLI

my-cluster를 클러스터 이름으로 바꾸고 다음 명령을 실행합니다. --preserve를 제거하면 클러스터에서 추가 기능 소프트웨어를 제거합니다.

aws eks delete-addon --cluster-name my-cluster --addon-name vpc-cni --preserve

Amazon VPC CNI 자체 관리형 추가 기능 업데이트

1.17 이하 클러스터 또는 Amazon VPC CNI Amazon EKS 추가 기능을 추가하지 않은 1.18 이상 클러스터가 있는 경우 다음 단계를 수행하여 추가 기능을 업데이트합니다. Amazon VPC CNI Amazon EKS 추가 기능을 추가한 경우, 대신 Amazon VPC CNI Amazon EKS 추가 기능 업데이트 섹션의 설차를 완료합니다.

kubectl을 사용하여 자체 관리형 추가 기능을 최신 마이너 및 패치 버전으로 업데이트하려면

  1. GitHub에서 Changelog를 확인하여 사용 가능한 최신 마이너 버전을 확인합니다.

  2. 다음 명령을 사용하여 클러스터의 Amazon VPC CNI 추가 기능 버전을 확인합니다.

    kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

    결과:

    amazon-k8s-cni-init:1.7.5-eksbuild.1 amazon-k8s-cni:1.7.5-eksbuild.1

    이 예제 출력에서 Amazon VPC CNI 애드온 버전은 GitHub의 Changelog에 나열된 최신 버전보다 이전 버전인 1.7입니다.

  3. 아래 해당 명령을 사용하여 Amazon VPC CNI 추가 기능을 사용 가능한 최신 마이너 및 패치 버전으로 업데이트합니다. 필요한 경우 1.9를 GitHub에서 Changelog의 최신 마이너 버전으로 바꿉니다. 매니페스트를 사용하면 지정한 마이너 버전에 대해 최신 패치 버전(예: .0)을 설치합니다.

    중요

    새 버전의 매니페스트를 적용할 때 클러스터에서 추가 기능의 기본 설정에 대한 변경 사항을 기본 설정으로 덮어쓸 수 있습니다. 사용자 지정 설정이 손실되지 않도록 하려면 매니페스트를 다운로드하고 필요에 따라 기본 설정을 변경한 다음 수정된 매니페스트를 클러스터에 적용합니다. 한 번에 하나의 마이너 버전만 업데이트해야 합니다. 예를 들어 현재 버전이 1.7이고 1.9로 업데이트하려는 경우 1.8로 먼저 업데이트한 다음 1.9로 업데이트해야 합니다.

    • 중국(베이징)(cn-north-1) 또는 중국(닝샤)(cn-northwest-1)

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.9/config/v1.9/aws-k8s-cni-cn.yaml
    • AWSGovCloud(미국 동부)(us-gov-east-1)

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.9/config/v1.9/aws-k8s-cni-us-gov-east-1.yaml
    • AWSGovCloud(미국 서부)(us-gov-west-1)

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.9/config/v1.9/aws-k8s-cni-us-gov-west-1.yaml
    • 기타 리전의 경우

      • 매니페스트 파일을 다운로드합니다.

        curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.9/config/v1.9/aws-k8s-cni.yaml
      • 필요한 경우 다음 명령의 <region-code>를 클러스터가 있는 리전으로 바꾸고 수정된 명령을 실행하여 파일의 리전 코드를 바꿉니다(현재 us-west-2).

        sed -i.bak -e 's/us-west-2/<region-code>/' aws-k8s-cni.yaml
      • 필요한 경우 다음 명령의 <account>를 클러스터가 있는 리전에 대한 Amazon EKS 추가 기능 컨테이너 이미지 주소의 계정으로 바꾸고 수정된 명령을 실행하여 파일의 리전 코드를 바꿉니다(현재 602401143452).

        sed -i.bak -e 's/602401143452/<account>/' aws-k8s-cni.yaml
      • 매니페스트 파일을 클러스터에 적용합니다.

        kubectl apply -f aws-k8s-cni.yaml