Amazon VPC CNI plugin for Kubernetes 관리 - Amazon EKS

Amazon VPC CNI plugin for Kubernetes 관리

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

AWS Management Console을 사용하여 1.18 이상 클러스터를 생성한 경우 Amazon EKS가 플러그 인을 Amazon EKS 추가 기능으로 설치한 상태가 됩니다. AWS Management Console 이외의 방법을 사용하여 1.18 이상 클러스터를 생성한 경우 Amazon EKS가 플러그 인을 자체 관리형 추가 기능으로 설치한 상태가 됩니다. Amazon VPC CNI Amazon EKS 추가 기능 추가의 절차를 사용하여 자체 관리형 추가 기능을 Amazon EKS 추가 기능으로 마이그레이션할 수 있습니다. Amazon VPC CNI plugin for Kubernetes 추가 기능을 추가한 클러스터가 있는 경우 Amazon VPC CNI plugin for Kubernetes 추가 기능 업데이트Amazon VPC CNI plugin for Kubernetes 추가 기능 제거 섹션의 절차를 따라 관리할 수 있습니다. Amazon EKS 추가 기능에 대한 자세한 내용은 Amazon EKS 추가 기능 섹션을 참조하세요.

각 클러스터 버전에 대한 Amazon VPC CNI 추가 기능의 권장 버전
1.22 1.21 1.20 1.19 1.18
추가 기능 버전 1.11.2-eksbuild.1 1.11.2-eksbuild.1 1.11.2-eksbuild.1 1.11.2-eksbuild.1 1.11.2-eksbuild.1

Amazon EKS 추가 기능 버전을 업데이트하려면 Amazon VPC CNI plugin for Kubernetes 추가 기능 업데이트 단원을 참조하세요. Amazon EKS Amazon Elastic Container Registry 또는 자체 리포지토리의 컨테이너 이미지를 사용하여 자체 관리형 추가 기능 버전을 업데이트하려면 Amazon VPC CNI plugin for Kubernetes 자체 관리형 추가 기능 업데이트 단원을 참조하세요.

중요

클러스터를 만들 때 배포된 추가 기능의 버전이 권장 버전보다 이전 버전일 수 있습니다. 매니페스트를 사용하여 자체 관리형 추가 기능을 업데이트한 경우 버전에 -eksbuild.1이 포함되지 않습니다.

사전 조건

Amazon VPC CNI Amazon EKS 추가 기능 추가

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 Amazon VPC CNI Amazon EKS 추가 기능을 1.18 이상 클러스터에 추가할 수 있습니다.

중요

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

eksctl

eksctl을 사용하여 Amazon EKS 추가 기능의 권장 버전 추가

my-cluster를 클러스터 이름으로 바꾸고 arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole을 기존 IAM 역할로 바꿉니다(사전 요구 사항 참조).

eksctl create addon \ --name vpc-cni \ --version v1.11.2-eksbuild.1 \ --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --force

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

대신 다른 버전의 추가 기능을 추가하려는 경우 다음 명령을 사용하여 추가 기능 및 클러스터 버전에 사용할 수 있는 모든 버전을 확인할 수 있습니다. 1.22을 클러스터의 버전으로 바꿉니다.

eksctl utils describe-addon-versions --name vpc-cni --kubernetes-version 1.22 | grep AddonVersion:

create addon 명령의 v1.11.2-eksbuild.1을 추가하려는 출력의 반환된 버전으로 바꾼 다음 create addon 명령을 실행합니다.

AWS Management Console

AWS Management Console을 사용하여 Amazon EKS 추가 기능의 권장 버전 추가

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

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

  3. 추가 기능(Add-ons) 탭을 선택합니다.

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

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

    • 사용할 [버전(Version)]을 선택합니다. 1.11.2-eksbuild.1 버전을 권장하지만 필요한 경우 다른 버전을 선택할 수 있습니다.

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

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

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

AWS CLI

AWS CLI를 사용하여 Amazon EKS 추가 기능의 권장 버전을 추가하려면 my-cluster를 클러스터 이름으로, arn:aws:iam::111122223333:role/AmazonEKSCNIRoleAmazonEKS_CNI_Policy IAM 정책을 연결한 IAM 역할의 ARN으로 바꾼 다음(사전 조건 참조) 명령을 실행합니다.

aws eks create-addon \ --cluster-name my-cluster \ --addon-name vpc-cni \ --addon-version v1.11.2-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --resolve-conflicts OVERWRITE

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

대신 다른 버전의 추가 기능을 추가하려는 경우 다음 명령을 사용하여 추가 기능 및 클러스터 버전에 사용할 수 있는 모든 버전을 확인할 수 있습니다. 1.22을 클러스터의 버전으로 바꿉니다.

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

create-addon 명령의 v1.11.2-eksbuild.1을 추가하려는 출력의 반환된 버전으로 바꾼 다음 create-addon 명령을 실행합니다.

Amazon VPC CNI plugin for Kubernetes 추가 기능 업데이트

중요

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

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

한 번에 하나의 마이너 버전을 업데이트하는 것이 좋습니다. 예를 들어 현재 버전이 1.9이고 1.11으로 업데이트하려는 경우 먼저 최신 패치 버전 1.10로 업데이트한 다음 최신 패치 버전 1.11으로 업데이트해야 합니다.

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 1.18 이상 클러스터에서 Amazon VPC CNI plugin for Kubernetes 추가 기능을 업데이트할 수 있습니다.

eksctl

eksctl을 사용하여 Amazon EKS 추가 기능을 권장 버전으로 업데이트

  1. 추가 기능의 현재 버전을 확인합니다. 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/AmazonEKSVPCCNIRole v1.11.2-eksbuild.1
  2. 추가 기능을 권장 버전으로 업데이트합니다.

    eksctl update addon \ --name vpc-cni \ --version 1.11.2-eksbuild.1 \ --cluster my-cluster \ --force

    대신 다른 버전의 추가 기능을 업데이트하려는 경우 다음 명령을 사용하여 추가 기능 및 클러스터 버전에 사용할 수 있는 모든 버전을 확인할 수 있습니다. 1.22을 클러스터의 버전으로 바꿉니다.

    eksctl utils describe-addon-versions --name vpc-cni --kubernetes-version 1.22 | grep AddonVersion:

    update addon 명령의 v1.11.2-eksbuild.1을 추가하려는 출력의 반환된 버전으로 바꾼 다음 update addon 명령을 실행합니다.

AWS Management Console

AWS Management Console을 사용하여 Amazon EKS 추가 기능을 권장 버전으로 업데이트

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

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

  3. 추가 기능(Add-ons) 탭을 선택합니다.

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

    • 사용하려는 Amazon EKS 추가 기능의 버전을 선택합니다. 1.11.2-eksbuild.1 버전을 권장하지만 필요한 경우 다른 버전을 선택할 수 있습니다.

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

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

    • 업데이트를 선택합니다.

AWS CLI

AWS CLI을 사용하여 Amazon EKS 추가 기능을 권장 버전으로 업데이트

  1. 추가 기능의 현재 버전을 확인합니다. 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. 추가 기능을 최신 권장 버전으로 업데이트합니다. my-cluster을 클러스터 이름으로 교체합니다.

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

    대신 다른 버전의 추가 기능을 업데이트하려는 경우 다음 명령을 사용하여 추가 기능 및 클러스터 버전에 사용할 수 있는 모든 버전을 확인할 수 있습니다. 1.22을 클러스터의 버전으로 바꿉니다.

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

    update-addon 명령의 v1.11.2-eksbuild.1을 추가하려는 출력의 반환된 버전으로 바꾼 다음 update-addon 명령을 실행합니다.

Amazon VPC CNI plugin for Kubernetes 추가 기능 제거

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 계정은 제거되지 않습니다.

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 1.18 이상의 클러스터에서 Amazon VPC CNI plugin for Kubernetes 추가 기능을 제거할 수 있습니다.

eksctl

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

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

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

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

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

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

  3. 추가 기능(Add-ons) 탭을 선택합니다.

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

AWS CLI

AWS CLI를 사용하여 Amazon EKS 추가 기능 제거

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

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

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

Amazon VPC CNI plugin for Kubernetes 추가 기능을 추가하지 않은 클러스터가 있거나 추가 기능을 직접 관리해야 하는 경우 다음 단계를 완료하여 추가 기능을 업데이트하세요. Amazon VPC CNI plugin for Kubernetes Amazon EKS 추가 기능을 추가하지 않은 경우, 대신 Amazon VPC CNI plugin for Kubernetes 추가 기능 업데이트 섹션의 설차를 완료합니다.

중요
  • 버전은 major-version.minor-version.patch-version으로 지정됨

  • 한 번에 하나의 마이너 버전만 업데이트해야 합니다. 예를 들어 현재 버전이 1.9이고 1.11로 업데이트하려는 경우 1.10로 먼저 업데이트한 다음 1.11로 업데이트해야 합니다.

  • 모든 버전은 모든 Amazon EKS 지원 Kubernetes 버전에서 작동하지만, 각 릴리스의 모든 기능이 모든 Kubernetes 버전에서 작동하지는 않습니다. 다른 Amazon EKS 기능을 사용할 때 특정 버전의 추가 기능이 필요한 경우 기능 설명서에 설명되어 있습니다.

  • 필요한 경우 모든 릴리스 버전으로 업데이트할 수 있지만 1.11.2 버전으로 업데이트하는 것이 좋습니다.

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

  1. 사용 가능한 버전을 확인하고 업데이트하려는 버전의 변경 사항을 숙지하려면 GitHub에서 releases를 봅니다.

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

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

    출력 예는 다음과 같습니다.

    amazon-k8s-cni-init:v1.7.5-eksbuild.1 amazon-k8s-cni:v1.7.5-eksbuild.1

    출력이 예제 출력과 다를 수 있습니다. 이 출력 예에서는 Amazon VPC CNI plugin for Kubernetes 추가 기능 버전이 1.7.5-eksbuild.1입니다. 현재 권장 버전은 1.11.2입니다. Amazon EKS가 원래 클러스터와 함께 배포한 버전은 이전 출력과 비슷합니다. 그러나 매니페스트를 사용하여 추가 기능을 한 번 이상 업데이트한 경우 출력에 -eksbuild.1이 포함될 수 없습니다.

  3. Helm V3 이상이나 매니페스트를 사용하여 DaemonSet을 업데이트합니다.

    Helm
    1. Helm에 eks-charts 리포지토리를 추가합니다.

      helm repo add eks https://aws.github.io/eks-charts
    2. 최신 차트가 적용되도록 로컬 리포지토리를 업데이트합니다.

      helm repo update
    3. 이후 단계에서 값을 지정해야 할 설정을 확인할 수 있도록 현재 설정을 백업합니다.

      kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
    4. Helm을 사용하여 기존 Amazon VPC CNI plugin for Kubernetes DaemonSet을 설치한 경우 다음 단계로 건너뜁니다.

      다음 옵션 중 하나를 완료하면 Helm이 DaemonSet 리소스를 관리할 수 있습니다.

      • 기존 리소스에 Helm 주석과 레이블을 추가합니다.

        1. 다음 콘텐츠를 helm-cni.sh이라는 파일에 저장합니다. 다른 릴리스 이름을 사용하려면 aws-vpc-cni를 바꿉니다.

          #!/usr/bin/env bash set -euo pipefail for kind in daemonSet clusterRole clusterRoleBinding serviceAccount; do echo "setting annotations and labels on $kind/aws-node" kubectl -n kube-system annotate --overwrite $kind aws-node meta.helm.sh/release-name=aws-vpc-cni kubectl -n kube-system annotate --overwrite $kind aws-node meta.helm.sh/release-namespace=kube-system kubectl -n kube-system label --overwrite $kind aws-node app.kubernetes.io/managed-by=Helm done
        2. 스크립트 실행 파일을 만듭니다.

          chmod +x helm-cni.sh
        3. 스크립트 실행

          ./helm-cni.sh
      • 기존 DaemonSet 리소스를 제거합니다.

        중요

        클러스터는 이 단계와 다음 단계를 완료하는 사이에 가동 중지 시간을 경험합니다.

        kubectl delete serviceaccount aws-node -n kube-system kubectl delete customresourcedefinition eniconfigs.crd.k8s.amazonaws.com kubectl delete clusterrole aws-node kubectl delete clusterrolebinding aws-node kubectl delete daemonset aws-node -n kube-system
    5. 다음 옵션 중 하나를 사용하여 차트를 설치합니다. 설치를 실행하려면 먼저 이전 단계에서 DaemonSet에 대해 만든 설정의 백업을 검토합니다. 그런 다음 구성 설정을 검토하여 이중 하나를 설정해야 하는지 여부를 결정합니다.

      DaemonSet에 사용할 기존 IAM 역할이 있는 경우 다음 설치 옵션 끝부분에 다음 줄을 추가합니다. aws-node Kubernetes 서비스 계정에 연결된 IAM 역할이 없는 경우 하나를 생성하는 것이 좋습니다. 111122223333을 계정 ID로, AmazonEKSVPCCNIRole을 역할 이름으로 바꿉니다. 역할을 생성하려면 서비스 계정에 IAM 역할을 사용하도록 Amazon VPC CNI plugin for Kubernetes 구성 섹션을 참조하세요.

      --set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"=arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole

      이전 단계에서 Helm 주석과 레이블을 추가한 경우 다음 옵션 중 하나에 다음 설정을 추가합니다.

      --set originalMatchLabels=true --set crd.create=false
      • 노드에 Amazon EKS Amazon ECR 리포지토리에 대한 액세스 권한이 있고 us-west-2 AWS 리전에 있는 경우 릴리스 이름 aws-vpc-cni 및 기본 구성을 사용하여 차트를 설치합니다.

        helm upgrade -i aws-vpc-cni eks/aws-vpc-cni \ --namespace kube-system \ --set image.tag=v1.11.2 \ --set init.image.tag=v1.11.2
      • 노드에 Amazon EKS Amazon ECR 리포지토리에 대한 액세스 권한이 있고 us-west-2 외의 AWS 리전에 있는 경우 릴리스 이름 aws-vpc-cni 및 기본 구성을 사용하여 차트를 설치합니다. eks-ecr-account을 클러스터가 있는 에 대한 AWS 리전에 대한 Amazon 컨테이너 이미지 레지스트리의 값으로 바꿉니다. region-code를 클러스터가 있는 AWS 리전으로 바꿉니다.

        helm upgrade -i aws-vpc-cni eks/aws-vpc-cni \ --namespace kube-system \ --set image.account=eks-ecr-account \ --set image.region=region-code \ --set image.tag=v1.11.2 \ --set init.image.account=eks-ecr-account --set init.image.region=region-code \ --set init.image.tag=v1.11.2
      • 노드에 Amazon EKS Amazon ECR 리포지토리에 대한 액세스 권한이 없는 경우

        1. 다음 컨테이너 이미지를 가져와서 노드가 액세스할 수 있는 리포지토리로 푸시합니다. 이미지를 가져오기, 태그 지정 및 자체 리포지토리로 푸시하는 방법에 대한 자세한 내용은 한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사 단원을 참조하세요. 다음 명령에서 버전을 사용하는 것이 좋지만 필요한 경우 모든 릴리스 버전으로 바꿀 수 있습니다. 602401143452, region-code을 클러스터가 있는 AWS 리전에 대한 Amazon 컨테이너 이미지 레지스트리의 값으로 바꿉니다.

          602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.11.2 602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.11.2
        2. 릴리스 이름 aws-vpc-cni 및 기본 구성을 사용하여 차트를 설치합니다. 설치를 실행하려면 먼저 이전 단계에서 DaemonSet에 대해 만든 설정의 백업을 검토합니다. 그런 다음 구성 설정을 검토하여 이중 하나를 설정해야 하는지 여부를 결정합니다. registry/리포지토리: 태그를 사용자의 레지스트리, 리포지토리, 태그로 바꿉니다.

          helm upgrade -i aws-vpc-cni eks/aws-vpc-cni \ --namespace kube-system \ --set image.override=registry/repo:tag \ --set init.image.override=registry/repo:tag
    Manifest
    1. 현재 Amazon VPC CNI plugin for Kubernetes DaemonSet의 기본 설정을 변경했거나, DaemonSet을 업데이트하기 위해 자체 리포지토리에서 컨테이너 이미지를 가져와야 하거나, 클러스터가 us-west-2 외의 리전에 있거나, 버전 1.7 이전에 대한 특정 패치 버전으로 업데이트해야 하는 경우 다음 단계로 건너뜁니다.

      다음 명령을 실행하여 Amazon VPC CNI plugin for Kubernetes 추가 기능을 업데이트합니다. 1.11.21.7.0 이상으로 변경할 수 있습니다. 1.7.5와 같이 1.7에 대해 지정한 패치 버전에 관계없이 이미지의 최신 패치 버전(1.7.10)을 가져옵니다.

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.11.2/config/master/aws-k8s-cni.yaml

      1.7.0보다 이전 버전으로 업데이트해야 하는 경우 다음 URL을 통해 매니페스트를 가져옵니다. 필요한 경우 1.6을 이전 버전으로 변경할 수 있습니다. 매니페스트는 지정한 버전에 대한 이미지의 최신 패치 버전을 가져옵니다.

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

      DaemonSet의 상태 확인 단계로 건너뜁니다.

    2. 노드에 Amazon EKS Amazon ECR 이미지 리포지토리에 대한 액세스 권한이 있는 경우 다음 단계로 건너뜁니다.

      다음 컨테이너 이미지를 가져와서 노드에 액세스 권한이 있는 리포지토리로 푸시합니다. 이미지를 가져오기, 태그 지정 및 자체 리포지토리로 푸시하는 방법에 대한 자세한 내용은 한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사 단원을 참조하세요. 다음 명령에서 버전을 사용하는 것이 좋지만 필요한 경우 모든 릴리스 버전으로 바꿀 수 있습니다. 602401143452, region-code을 클러스터가 있는 AWS 리전에 대한 Amazon 컨테이너 이미지 레지스트리의 값으로 바꿉니다.

      602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.11.2 602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.11.2
    3. DaemonSet에 대한 기본 설정을 변경하지 않은 경우 다음 단계로 건너뜁니다.

      설정을 새 매니페스트의 기본 설정과 비교할 수 있도록 현재 설정을 백업합니다.

      kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
    4. Amazon VPC CNI plugin for Kubernetes 추가 기능에 대한 매니페스트를 다운로드합니다. 1.11.21.7.0 이상으로 변경할 수 있습니다. 1.7.5와 같이 1.7에 대해 지정한 패치 버전에 관계없이 이미지의 최신 패치 버전(1.7.10)을 가져옵니다.

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.11.2/config/master/aws-k8s-cni.yaml

      1.7.0보다 이전 버전으로 업데이트해야 하는 경우 다음 URL을 통해 매니페스트를 가져옵니다. 필요한 경우 1.6을 이전 버전으로 변경할 수 있습니다. 매니페스트는 지정한 버전에 대한 이미지의 최신 패치 버전을 가져옵니다.

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

      1.7 이전의 특정 패치 버전이 필요한 경우 텍스트 편집기에서 파일을 열고 다음 두 줄에서 v1.11.2를 원하는 특정 패치 버전으로 변경합니다. 다운로드한 파일의 버전에 따라 v1.11.2가 다른 버전 번호이거나 latest일 수 있습니다. 변경한 이후 파일을 저장합니다.

      image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni-init:v1.11.2" image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni:v1.11.2"
    5. 이전 단계에서 컨테이너 이미지를 자신의 리포지토리에 복사하지 않은 경우 다음 단계로 건너뜁니다.

      파일의 레지스트리, 리포지토리 및 태그를 자신의 것으로 바꿉니다.

      1. 다음 명령의 your-registry를 레지스트리로 바꾸고 수정된 명령을 실행하여 파일의 602401143452.dkr.ecr.us-west-2.amazonaws.com를 바꿉니다.

        sed -i.bak -e 's|602401143452.dkr.ecr.us-west-2.amazonaws.com|your-registry|' aws-k8s-cni.yaml
      2. 다음 명령의 your-repositorytag를 자신의 리포지토리 및 태그로 바꾸고 수정된 명령을 실행하여 파일의 amazon-k8s-cni-init:v1.11.2를 바꿉니다. 1.11.2를 다운로드한 매니페스트의 버전으로 바꿉니다.

        sed -i.bak -e 's|amazon-k8s-cni-init:v1.11.2|your-repository:tag|' aws-k8s-cni.yaml
      3. 다음 명령의 your-repositorytag를 자신의 리포지토리 및 태그로 바꾸고 수정된 명령을 실행하여 파일의 amazon-k8s-cni:v1.11.2를 바꿉니다. 1.11.2를 다운로드한 매니페스트의 버전으로 바꿉니다.

        sed -i.bak -e 's|amazon-k8s-cni:v1.11.2|your-repository:tag|' aws-k8s-cni.yaml
      4. 설정 비교 단계로 건너뜁니다.

    6. 다음 명령을 실행하여 파일의 정보를 클러스터가 있는 AWS 리전의 정보로 바꿉니다.

      1. 파일의 us-west-2를 클러스터가 있는 AWS 리전으로 바꿉니다.

        AWS GovCloud(미국 동부)

        sed -i.bak -e 's|us-west-2|us-gov-east-1|' aws-k8s-cni.yaml

        AWS GovCloud(미국 서부)

        sed -i.bak -e 's|us-west-2|us-gov-west-1|' aws-k8s-cni.yaml

        다른 모든 AWS 리전 - region-code를 클러스터가 있는 AWS 리전으로 바꿉니다.

        sed -i.bak -e 's|us-west-2|region-code|' aws-k8s-cni.yaml
      2. 파일의 602401143452를 클러스터가 있는 AWS 리전의 계정으로 바꿉니다.

        AWS GovCloud(미국 동부)

        sed -i.bak -e 's|602401143452|151742754352|' aws-k8s-cni.yaml

        AWS GovCloud(미국 서부)

        sed -i.bak -e 's|602401143452|013241004608|' aws-k8s-cni.yaml

        다른 모든 AWS 리전 - 계정을 클러스터가 있는 AWS 리전에 대한 Amazon 컨테이너 이미지 레지스트리의 값으로 바꿉니다.

        sed -i.bak -e 's|602401143452|account|' aws-k8s-cni.yaml
    7. 현재 Amazon VPC CNI plugin for Kubernetes DaemonSet에 대한 기본 설정을 변경한 경우 새 매니페스트의 설정을 이전 단계에서 만든 백업 파일과 비교합니다.

      diff aws-k8s-cni.yaml aws-k8s-cni-old.yaml -u

      새 매니페스트 파일을 편집하고 모든 설정 값으로 변경하면 백업 파일의 설정과 일치합니다.

    8. 매니페스트 파일을 클러스터에 적용합니다.

      kubectl apply -f aws-k8s-cni.yaml
  4. DaemonSet의 상태를 확인합니다.

    kubectl get daemonset aws-node -n kube-system

    출력 예는 다음과 같습니다.

    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE aws-node 2 2 2 2 2 <none> 4h39m

    READY, UP-TO-DATEAVAILABLE 열의 숫자가 동일하면 업데이트가 완료됩니다. 이전 출력의 숫자와 다를 수 있습니다.

  5. DaemonSet을 보고 변경한 내용을 확인합니다.

    kubectl get daemonset aws-node -n kube-system -o yaml