Amazon VPC CNI アドオンの管理 - Amazon EKS

Amazon VPC CNI アドオンの管理

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

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 Amazon EKS アドオンを追加してあるクラスターの場合は、「Amazon VPC CNI Amazon EKS アドオンの更新」と「Amazon VPC CNI Amazon EKS アドオンの削除」セクションに示される手順で管理できます。Amazon EKS アドオンの詳細については、「Amazon EKS アドオン」を参照してください。

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

Amazon EKS アドオンのバージョンを更新するには、「Amazon VPC CNI Amazon EKS アドオンの更新」を参照してください。Amazon EKS Amazon Elastic Container Registry または独自のリポジトリ内のコンテナイメージを使用してセルフマネージド型アドオンのバージョンを更新するには、「Amazon VPC CNI のセルフマネージド型アドオンを更新する」を参照してください。

重要

クラスターの作成時にデプロイされたアドオンのバージョンは、推奨バージョンより前の場合があります。マニフェストを使用してセルフマネージド型アドオンを更新した場合、バージョンには -eksbuild.1 は含まれません。

前提条件

Amazon VPC CNI Amazon EKS アドオンの追加します。

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

AWS Management Console

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

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

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

  3. [Configuration (設定)] タブ、[Add-ons (アドオン)] タブの順に選択します。

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

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

    • 使用する [Version (バージョン)] を選択します。最新とマークされたバージョンを推奨します。

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

    • [クラスター上のこのアドオンで既存の設定を上書きする] を選択します。追加する Amazon EKS アドオンの設定のいずれかが、その時点のセルフマネージド型アドオンにおける設定と競合している場合、そのアドオンの追加は失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。

    • [Add (追加)] を選択します。

AWS CLI

AWS CLI を使用して Amazon EKS アドオンの最新バージョンを追加するには

  1. クラスターのバージョンで使用できる Amazon VPC CNI Amazon EKS アドオンのバージョンを確認します。次のコマンドで、1.20 をクラスターのバージョンに置き換えてください。

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

    出力

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

    True が下に表示されているバージョンは、新しいクラスターでデプロイされたデフォルトのバージョンです。前の出力では、利用可能な最新バージョンは v1.10.2-eksbuild.1 です。

  2. 次のコマンドの、my-cluster を自分のクラスターの名前に、v1.10.2-eksbuild.1 を利用可能な最新バージョンに置き換え、arn:aws:iam::AWS_ACCOUNT_ID:role/AmazonEKSCNIRole は IAM ポリシー AmazonEKS_CNI_Policy をアタッチしたIAM ロールの ARN に置き換えた上で (前提条件を参照)、コマンドを実行してください。

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

    追加する 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 回分だけにすることが適切です。例えば、現在のマイナーバージョン 1.81.10 に更新する場合、まず 1.9 での最新のパッチバージョンに更新した上で、次に 1.10 での最新のパッチバージョンに更新します。

Amazon VPC CNI Amazon EKS アドオンを、1.18 以降のクラスターに追加するために使用する、ツールの名前が付いたタブを選択します。

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.10.2-eksbuild.1
  2. アドオンを最新バージョンに更新する

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

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

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

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

  3. [Configuration (設定)] タブ、[Add-ons (アドオン)] タブの順に選択します。

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

    • [Version (バージョン)] で、使用したい Amazon EKS アドオンのバージョンを選択します。最新とマークされたバージョンを推奨します。

    • まだ選択していない場合は、[サービスアカウントロール]で、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.20 を、自分のクラスターのバージョンに置き換えてください。

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

    出力

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

    先ほどの出力で True が下に表示されているバージョンは、新しいクラスターでデプロイされたそのデフォルトのバージョンです。前の出力では、利用可能な最新バージョンは v1.10.2-eksbuild.1 です。返されたバージョンは異なる場合があります。

  3. アドオンを、前の出力で返された最新バージョンに更新します。my-cluster を自分のクラスターの名前に、v1.10.2-eksbuild.1 を更新先のアドオンのバージョンに置き換えてください。

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

Amazon VPC CNI Amazon EKS アドオンの削除

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

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

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

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

Amazon VPC CNI Amazon EKS アドオンを、1.18 以降のクラスターから削除するために使用するツールの名前が付いたタブを選択します。

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. 左のナビゲーションペインで、Amazon EKS [Clusters] (クラスター) を選択した後、Amazon VPC CNI Amazon EKS アドオンを削除するクラスター名を選択します。

  3. [Configuration] (設定) タブ、[Add-ons] (アドオン) タブの順に選択します。

  4. vpc-cni ボックス右上にあるボックスをクリックし、[Remove (削除)] を選択します。Selectクラスターで保持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 以前のクラスターまたは 1.18 以降のクラスターで、Amazon VPC CNI Amazon EKS アドオンを追加していない場合にアドオンを更新するには、以下の手順を完了します。Amazon VPC CNI Amazon EKS アドオンを追加した場合は、代わりに Amazon VPC CNI Amazon EKS アドオンの更新 で手順を完了してください。

kubectl を使用して、セルフマネージド型アドオンを最新のマイナーおよびパッチバージョンに更新する

  1. GitHub の「Releases」を使用して、利用可能な最新のジョンを確認します。

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

  3. ノードが Amazon EKS Amazon ECR イメージリポジトリにアクセスできない場合は、次のコンテナイメージをプルして、ノードがアクセスできるリポジトリにプッシュする必要があります。イメージをプルし、タグ付けして独自のリポジトリにプッシュする方法の詳細については、あるリポジトリから別のリポジトリにコンテナイメージをコピーする を参照してください。account および region-code を、Amazon コンテナイメージレジストリ から取得したお使いのクラスターが属する AWS リージョン の値に置き換えます。

    account.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.10.2 account.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.10.2
  4. Amazon VPC CNI アドオンを、利用可能な最新のマイナーおよびパッチバージョンに更新します。

    重要
    • マニフェストにより新しいバージョンが適用される際は、クラスターでアドオンのデフォルト設定に加えてある任意の変更が、デフォルト設定で上書きされる可能性があります。カスタム設定が失われないようにするには、マニフェストをダウンロードし、必要に応じてデフォルト設定を変更し、変更したマニフェストをクラスターに適用します。一度に更新できるマイナーバージョンは 1 つのみです。たとえば、現在のバージョンが 1.8 で、これを 1.10 にアップデートする場合は、まず 1.9 にアップデートし、次に以下の いずれかの コマンド でバージョン番号を変更してから 1.10 にアップデートする必要があります。

    • 最新バージョンは、Amazon EKS がサポートするすべての Kubernetes バージョンで動作します。

    お使いのクラスターが属する AWS リージョン に対して、Amazon VPC CNI アドオンを利用可能な最新のマイナーおよびパッチバージョンに更新する手順を完了します。

    • クラスターが AWS GovCloud (米国-東部) (us-gov-east-1) AWS リージョン にある場合は、以下のコマンドを実行します。

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.10/config/master/aws-k8s-cni-us-gov-east-1.yaml
    • クラスターが AWS GovCloud (米国-西部) (us-gov-west-1) AWS リージョン にある場合は、以下のコマンドを実行します。

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.10/config/master/aws-k8s-cni-us-gov-west-1.yaml
    • クラスターが米国西部 (オレゴン) (us-west-2) AWS リージョン にある場合は、以下のコマンドを実行します。

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.10/config/master/aws-k8s-cni.yaml
    • クラスターが他の AWS リージョン にある場合、または、前のステップで独自のリポジトリにイメージをコピーした場合は、次のステップを完了します。

      1. マニフェストファイルをダウンロードします。

        curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.10/config/master/aws-k8s-cni.yaml
      2. 次のいずれかのオプションを使用して、ファイルを変更します。

        • 前のステップでコンテナイメージを独自のリポジトリにコピーしなかった場合は、次のコマンドを実行します。

          1. 次のコマンドの region-code をクラスターがある AWS リージョン に置き換え、変更したコマンドを実行して、ファイル内の us-west-2 を置き換えます。

            sed -i.bak -e 's|us-west-2|region-code|' aws-k8s-cni.yaml
          2. 必要な場合は、次のコマンドの account をクラスターがある AWS リージョン の Amazon コンテナイメージレジストリ から取得したアカウントに置き換えた上で、変更したのコマンドを実行し、ファイル内の 602401143452 を置き換えます。

            sed -i.bak -e 's|602401143452|account|' aws-k8s-cni.yaml
        • 前のステップでコンテナイメージを独自のリポジトリにコピーした場合は、次の置換を行い、次のコマンドを実行します。

          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-repository:tag を実際のリポジトリとタグに置き換え、変更したコマンドを実行してファイル内の amazon-k8s-cni-init:v1.10 を置き換えます。

            sed -i.bak -e 's|amazon-k8s-cni-init:v1.10|your-repository:tag|' aws-k8s-cni.yaml
          3. 次のコマンドの your-repository:tag を実際のリポジトリとタグに置き換え、変更したコマンドを実行してファイル内の amazon-k8s-cni:v1.10 を置き換えます。

            sed -i.bak -e 's|amazon-k8s-cni:v1.10|your-repository:tag|' aws-k8s-cni.yaml
      3. マニフェストファイルをクラスターに適用します。

        kubectl apply -f aws-k8s-cni.yaml