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

Amazon VPC CNI アドオンの管理

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

1.18 以降のクラスターで Amazon VPC CNI Amazon EKS アドオンを追加していない場合は、「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 のセルフマネージド型アドオンを更新する に示される手順によりアドオンを更新できます。

Version 1.7.5-eksbuild.1 すべての Kubernetes バージョンのセルフマネージド型アドオンにデプロイされます。Version 1.7.5-eksbuild.2 は、Kubernetes バージョン 1.18 以降の Amazon EKS アドオンにデプロイされます。

Prerequisites

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. 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 (バージョン)] を選択します。最新とマークされたバージョンを推奨します。

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

    • [クラスター上のこのアドオンで既存の設定を上書きする] を選択します。追加する 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.0-eksbuild.1 False ... v1.7.5-eksbuild.2 True ...

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

  2. 次のコマンドを実行します。その際に、<my-cluster> (<>を含む) を自分のクラスター名に置き換え、<v1.9.0-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.9.0-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.7 で、これを 1.9 に更新する場合は、まず 1.8 での最新のパッチおよびビルドバージョンに更新した上で、次に 1.9 での最新のパッチおよびビルドバージョンに更新します。

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.8.0-eksbuild.1 ACTIVE 0 arn:aws:iam::<111122223333>:role/<eksctl-my-cluster-addon-iamserviceaccount-kube-sys-Role1-UK9MQSLXK0MW> v1.9.0-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 (編集)] を選択します。

    • [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.8.0-eksbuild.1
  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.0-eksbuild.1 False ... v1.7.5-eksbuild.2 True ...

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

  3. 以前の出力で返された、最新のマイナーバージョンに対する最新のパッチバージョンに対する最新のビルドバージョンに、アドオンを更新します。<my-cluster> (<>を含む) を自分のクラスター名に置き換え、<v1.9.0-eksbuild.1> を更新先となるアドオンのバージョンに置き換えます。

    aws eks update-addon \ --cluster-name <my-cluster> \ --addon-name vpc-cni \ --addon-version <v1.9.0-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. 左のナビゲーションで、[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 の「Changelog」を使用して、利用可能な最新のマイナーバージョンを確認します。

  2. 次のコマンドを使用して、クラスターの Amazon VPC CNI アドオンバージョンを確認します。

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

    出力:

    amazon-k8s-cni:v1.8.0

    この出力例では、Amazon VPC CNI アドオンバージョンは 1.8.0 となっています。これは、GitHub のChangelog にリストされている最新バージョンよりも前のバージョンです。

  3. 以下の適切なコマンドにより、Amazon VPC CNI アドオンを、利用可能な最新のマイナーおよびパッチバージョンに更新します。1.9 は、GitHub の Changelog にある最新のマイナーバージョンに置き換えます。マニフェストが、この指定したマイナーバージョンのために、最新のパッチバージョンを (.0 など) インストールします。

    重要

    マニフェストにより新しいバージョンが適用される際は、クラスターでアドオンのデフォルト設定に加えてある任意の変更が、デフォルト設定で上書きされる可能性があります。カスタム設定が失われないようにするには、マニフェストをダウンロードし、必要に応じてデフォルト設定を変更し、変更したマニフェストをクラスターに適用します。一度に更新できるマイナーバージョンは 1 つのみです。たとえば、現在のバージョンが 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
    • AWS GovCloud (米国東部) (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
    • AWS GovCloud (米国西部) (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