Amazon VPC CNI plugin for Kubernetes の管理 - Amazon EKS

Amazon VPC CNI plugin for Kubernetes の管理

Amazon EKS は、Kubernetes 用の Amazon VPC Container Network Interface (CNI) プラグインを使用したネイティブ VPC ネットワークをサポートしています。このプラグインを使用すると、Kubernetes pods は VPC ネットワーク上と同じ IP アドレスを pod 内に持つことができます。詳細については、「Amazon VPC CNI Plugin for Kubernetes を使用した Amazon EKS での Pod ネットワーク」を参照してください。

各クラスターバージョンに対する Amazon VPC CNI アドオンの推奨バージョン
1.23 1.22 1.21 1.20 1.19 1.18
アドオンバージョン 1.11.3-eksbuild.1 1.11.3-eksbuild.1 1.11.3-eksbuild.1 1.11.3-eksbuild.1 1.11.3-eksbuild.1 1.11.3-eksbuild.1

1.18 を使用して AWS Management Console 以降のクラスターを作成した場合、Amazon EKS アドオンとして、プラグインが Amazon EKS によりインストールされます。任意のツールを使用して 1.17 以前のクラスターを作成した場合、または 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 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.3-eksbuild.1 \ --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --force

追加する Amazon EKS アドオンの設定のいずれかが、その時点のセルフマネージド型アドオンにおける設定と競合している場合、そのアドオンの追加は失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。

代わりに別のバージョンのアドオンを追加する場合は、次のコマンドを使用して、アドオンで使用可能なすべてのバージョンおよびクラスターのバージョンを確認できます。1.23 を自分のクラスターのバージョンに置き換えます。

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

create addon コマンドの v1.11.3-eksbuild.1 を、追加する出力で返されたバージョンで置き換え、create addon コマンドを実行します。

AWS Management Console

AWS Management Console を使用して Amazon EKS アドオンの推奨バージョンを追加するには

  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで、[Clusters] (クラスター) を選択した後、Amazon VPC CNI plugin for Kubernetes アドオンを設定するクラスター名を選択します。

  3. [アドオン] タブを選択します。

  4. [Add new (新規追加)] を選択します。

    • [Name (名前)]は vpc-cni を選択します。

    • 使用する [Version (バージョン)] を選択します。1.11.3-eksbuild.1 バージョンを推奨しますが、必要に応じて別のバージョンを選択できます。

    • [サービスアカウントロール]で、AmazonEKS_CNI_Policy IAM ポリシーをアタッチした (前提条件参照) IAM ロールの名前を選択します。

    • [クラスター上のこのアドオンで既存の設定を上書きする] を選択します。追加する 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.3-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --resolve-conflicts OVERWRITE

追加する Amazon EKS アドオンの設定のいずれかが、その時点のセルフマネージド型アドオンにおける設定と競合している場合、そのアドオンの追加は失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。

代わりに別のバージョンのアドオンを追加する場合は、次のコマンドを使用して、アドオンで使用可能なすべてのバージョンおよびクラスターのバージョンを確認できます。1.23 を自分のクラスターのバージョンに置き換えます。

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

create-addon コマンドの v1.11.3-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 マイナーバージョンに クラスターを更新 しても、アドオンが自動的に更新されることはありません。既存のクラスターのアドオンを更新するには、まずは自分で更新を開始しする必要があります。その後、Amazon EKS でアドオンが更新されます。

一度に 1 つのマイナーバージョンを更新することをお勧めします。例えば、現在のマイナーバージョン 1.91.11 に更新する場合、まず 1.10 での最新のパッチバージョンに更新した上で、次に 1.11 での最新のパッチバージョンに更新します。

eksctl、AWS Management Console、または AWS CLI を使用して、1.18 以降のクラスターの Amazon VPC CNI plugin for Kubernetes アドオンを更新できます。

eksctl

eksctl を使用して Amazon EKS アドオンを推奨バージョンに更新するには

  1. 現在使用している CoreDNS アドオンのバージョンを確認します。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.3-eksbuild.1
  2. アドオンを推奨バージョンに更新します。

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

    代わりに別のバージョンのアドオンに更新する場合は、次のコマンドを使用して、アドオンで使用可能なすべてのバージョンとクラスターのバージョンを確認できます。1.23 を自分のクラスターのバージョンに置き換えます。

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

    update addon コマンドの v1.11.3-eksbuild.1 を、追加する出力で返されたバージョンで置き換え、update addon コマンドを実行します。

AWS Management Console

AWS Management Console を使用して Amazon EKS アドオンを推奨バージョンに更新するには

  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで、[Clusters] (クラスター) を選択した後、Amazon VPC CNI plugin for Kubernetes アドオンを更新するクラスター名を選択します。

  3. [アドオン] タブを選択します。

  4. vpc-cni ボックスの右上にあるボックスを選択し、[Edit (編集)] を選択します。

    • [Version (バージョン)] で、使用したい Amazon EKS アドオンのバージョンを選択します。1.11.3-eksbuild.1 バージョンを推奨しますが、必要に応じて別のバージョンを選択できます。

    • まだ選択していない場合は、[サービスアカウントロール]で、AmazonEKS_CNI_Policy IAM ポリシーをアタッチした (前提条件参照) IAM ロールの名前を選択します。

    • [クラスター上のこのアドオンで既存の設定を上書きする] を選択します。

    • [Update] (更新) を選択します。

AWS CLI

AWS CLI を使用して Amazon EKS アドオンを推奨バージョンに更新するには

  1. 現在使用している CoreDNS アドオンのバージョンを確認します。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.3-eksbuild.1 \ --resolve-conflicts OVERWRITE

    代わりに別のバージョンのアドオンに更新する場合は、次のコマンドを使用して、アドオンで使用可能なすべてのバージョンとクラスターのバージョンを確認できます。1.23 を自分のクラスターのバージョンに置き換えます。

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

    update-addon コマンドの v1.11.3-eksbuild.1 を、追加する出力で返されたバージョンで置き換え、update-addon コマンドを実行します。

Amazon VPC CNI plugin for Kubernetes アドオンの削除

Amazon EKS アドオンを削除する場合、次の 2 つのオプションがあります。

  • クラスター上のアドオンのソフトウェアを保持する — このオプションでは、Amazon EKS の設定管理が削除され、Amazon EKS が更新を通知し、更新を開始すると Amazon EKS アドオンが自動的に更新されますが、アドオンのソフトウェアはクラスター上に保持されます。このオプションを選択すると、Amazon EKS アドオンではなく、セルフマネージド型アドオンになります。アドオンではダウンタイムはありません。

  • クラスターからアドオンソフトウェアを完全に削除する — クラスターから Amazon EKS アドオンを削除するのは、アドオンが提供する機能に依存するリソースがクラスター上にない場合のみとしてください。Amazon EKS アドオンは、削除した後でも必要に応じて再度追加することができます。

アドオンに IAM アカウントが関連付けられている場合、その IAM アカウントは削除されません。

eksctl、AWS Management Console、または AWS CLI を使用して、クラスターから 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. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで、[Clusters] (クラスター) を選択した後、Amazon VPC CNI plugin for Kubernetes アドオンを削除するクラスター名を選択します。

  3. [アドオン] タブを選択します。

  4. vpc-cni ボックス右上にあるボックスをクリックし、[Remove (削除)] を選択します。Selectクラスターで保持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 つのみです。例えば、現在のバージョンが 1.9 で、これを 1.11 に更新する場合は、まず 1.10 に更新してから 1.11 に更新する必要があります。

  • すべてのバージョンは、Amazon EKS がサポートするすべての Kubernetes バージョンで動作しますが、各リリースの全機能がすべての Kubernetes バージョンで動作するわけではありません。異なる Amazon EKS の機能を使用する際、アドオンの特定のバージョンが必要な場合については、機能に関するドキュメントに記載されています。

  • バージョン 1.11.3 に更新することをお勧めしますが、必要であれば任意のリリースバージョンにも更新できます。

セルフマネージド型アドオンを更新するには

  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.3 です。Amazon EKS によってお使いのクラスターで最初にデプロイされたバージョンは、前述の出力に近いものです。ただし、マニフェストを使用してアドオンを少なくとも一度更新している場合、出力に -eksbuild.1 が含まれない場合があります。

  3. Helm V3 以降またはマニフェストを使用して、DaemonSet を更新します。

    Helm
    1. eks-charts リポジトリを Helm に追加します。

      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 をインストールした場合、次の手順にスキップします。

      次のオプションの 1 つを完了して、Helm が DaemonSet リソースを管理できるようにします。

      • Helm のアノテーションとラベルを既存のリソースに追加します。

        1. 次のコンテンツをデバイスにコピーします。別のリリース名を使用する場合、aws-vpc-cni を置き換えます。コマンドを実行して helm-cni.sh ファイルを作成します。

          cat >helm-cni.sh <<EOF #!/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 EOF
        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 ロールが関連付けられていない場合、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.3 \ --set init.image.tag=v1.11.3
      • ノードが 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.3 \ --set init.image.account=eks-ecr-account --set init.image.region=region-code \ --set init.image.tag=v1.11.3
      • ノードが Amazon EKS Amazon ECR リポジトリにアクセスできない場合

        1. 次のコンテナイメージをプルして、ノードがアクセスできるリポジトリにプッシュします。イメージをプルし、タグ付けして独自のリポジトリにプッシュする方法の詳細については、あるリポジトリから別のリポジトリにコンテナイメージをコピーする を参照してください。次のコマンドのバージョンを使用することをお勧めしますが、必要に応じて任意のリリースバージョンに置き換えることができます。602401143452 および region-code を、クラスターが属する AWS リージョン 用の Amazon コンテナイメージレジストリ の値に置き換えます。

          602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.11.3 602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.11.3
        2. リリース名 aws-vpc-cni およびデフォルト設定のチャートをインストールします。インストールを実行する前に、前の手順で DaemonSet に設定したバックアップを確認します。その後、構成設定を確認して、それらのいずれかを設定する必要があるかどうかを判断します。registry/repo:tag:tag を、自分のレジストリ、リポジトリ、そしてタグに置き換えます。

          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.3 を、1.7.0 以降に変更できます。1.7.5 など、1.7 用に指定したパッチバージョンに関係なく、イメージの最新のパッチバージョン (1.7.10) がプルされます。

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.11.3/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

      View the status of the DaemonSet」(DaemonSet のステータスを確認する) のステップにスキップします。

    2. ノードが Amazon EKS Amazon ECR イメージリポジトリにアクセスできる場合は、次の手順にスキップします。

      次のコンテナイメージをプルして、ノードがアクセスできるリポジトリにプッシュします。イメージをプルし、タグ付けして独自のリポジトリにプッシュする方法の詳細については、あるリポジトリから別のリポジトリにコンテナイメージをコピーする を参照してください。次のコマンドのバージョンを使用することをお勧めしますが、必要に応じて任意のリリースバージョンに置き換えることができます。602401143452 および region-code を、クラスターが属する AWS リージョン 用の Amazon コンテナイメージレジストリ の値に置き換えます。

      602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.11.3 602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.11.3
    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.3 を、1.7.0 以降に変更できます。1.7.5 など、1.7 用に指定したパッチバージョンに関係なく、イメージの最新のパッチバージョン (1.7.10) がプルされます。

      curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.11.3/config/master/aws-k8s-cni.yaml

      1.7.0 より前のバージョンに更新する必要がある場合、次の URL からマニフェストをプルします。必要に応じて、1.6 を以前のバージョンに変更できます。マニフェストは、指定したバージョンのイメージの最新のパッチバージョンをプルします。

      curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

      1.7 以前の特定のパッチバージョンが必要な場合、テキストエディタでファイルを開き、次の 2 行の v1.11.3 を、必要な特定のパッチバージョンに変更します。ダウンロードしたファイルのバージョンに応じて、v1.11.3 は別のバージョン番号であったり latest である場合もあります。変更を行った後、ファイルを保存します。

      image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni-init:1.11.3" image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni:v1.11.3"
    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.3 を置き換えます。1.11.3 を、ダウンロードしたマニフェストのバージョンに置き換えます。

        sed -i.bak -e 's|amazon-k8s-cni-init:v1.11.3|your-repository:tag|' aws-k8s-cni.yaml
      3. 次のコマンドの your-repositorytag をユーザーのリポジトリとタグに置き換え、変更したコマンドを実行してファイル内の amazon-k8s-cni:v1.11.3 を置き換えます。1.11.3 を、ダウンロードしたマニフェストのバージョンに置き換えます。

        sed -i.bak -e 's|amazon-k8s-cni:v1.11.3|your-repository:tag|' aws-k8s-cni.yaml
      4. Compare settings」(設定の比較) の手順にスキップします。

    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 リージョン — account を、クラスターが属する 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

    READYUP-TO-DATEAVAILABLE 列の数字が同じであれば、更新は完了です。数字は、前の出力とは異なる場合があります。

  5. DaemonSet を表示して、行った変更を確認します。

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