Kubernetes kube-proxy アドオンの使用 - Amazon EKS

Kubernetes kube-proxy アドオンの使用

重要

セルフマネージド型のアドオンを使用する代わりに、Amazon EKS タイプのアドオンをクラスターに追加することをお勧めします。タイプの違いがよくわからない場合は、「Amazon EKS アドオン」を参照してください。Amazon EKS アドオンをクラスターに追加する方法については、「アドオンの作成」を参照してください。Amazon EKS アドオンを使用できない場合は、その理由に関する問題をコンテナロードマップの GitHub リポジトリに送信することをお勧めします

kube-proxy アドオンは Amazon EKS クラスター内の各 Amazon EC2 ノードにデプロイされます。これはノード上のネットワークルールを維持し、Pods へのネットワーク通信を有効化します。アドオンは、クラスター内の Fargate ノードにはデプロイされません。詳細については、Kubernetes ドキュメントの「kube-proxy」を参照してください。

次の表は、各 Kubernetes バージョンの Amazon EKS アドオンタイプの利用可能な最新バージョンを示しています。

Kubernetes バージョン 1.29 1.28 1.27 1.26 1.25 1.24 1.23
v1.29.1-eksbuild.2 v1.28.6-eksbuild.2 v1.27.10-eksbuild.2 v1.26.13-eksbuild.2 v1.25.16-eksbuild.3 v1.24.17-eksbuild.8 v1.23.17-eksbuild.9
重要

以前のバージョンのドキュメントには誤りが含まれていました。kube-proxy バージョン v1.28.5v1.27.9、および v1.26.12 は利用できません。

このアドオンを自己管理している場合、表のバージョンは、利用可能なセルフマネージドバージョンと同じではない可能性があります。

各 Amazon EKS クラスターバージョン用に利用可能な kube-proxy コンテナイメージは 2 タイプあります。

  • デフォルト - このイメージタイプは Debian ベースの Docker イメージに基づいており、Kubernetes アップストリームコミュニティによって維持されています。

  • 最小限 - このイメージタイプは、最小限のベースイメージに基づいており、シェルを持たない Amazon EKS Distro によって維持され、最小限のパッケージを含んでシェルはありません。詳細については、「Amazon EKS Distro」を参照してください。

Amazon EKS クラスターの各バージョンで使用可能な最新のセルフマネージド kube-proxy コンテナイメージバージョン
[イメージタイプ] 1.29 1.28 1.27 1.26 1.25 1.24 1.23
kube-proxy (デフォルトタイプ) 最小限のタイプのみ使用可能  最小限のタイプのみ使用可能  最小限のタイプのみ使用可能  最小限のタイプのみ使用可能  最小限のタイプのみ使用可能  v1.24.10-eksbuild.2 v1.23.16-eksbuild.2
kube-proxy (最小タイプ) v1.29.1-minimal-eksbuild.2 v1.28.6-minimal-eksbuild.2 v1.27.10-minimal-eksbuild.2 v1.26.13-minimal-eksbuild.2 v1.25.16-minimal-eksbuild.3 v1.24.17-minimal-eksbuild.4 v1.23.17-minimal-eksbuild.5
重要
  • デフォルトの画像タイプは、Kubernetes バージョン 1.25 およびそれ以降では使用できません。最小限のイメージタイプを使用する必要があります。

  • Amazon EKS アドオンタイプを更新するときは、有効な Amazon EKS アドオンバージョンを指定しますが、この表に記載されているバージョンではない可能性があります。これは、Amazon EKS アドオンのバージョンが、このアドオンのセルフマネージドタイプを更新するときに指定されるコンテナイメージのバージョンと常に一致するとは限らないためです。このアドオンのセルフマネージドタイプを更新するときは、この表に記載されている有効なコンテナイメージのバージョンを指定します。

前提条件

  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用開始」を参照してください。

考慮事項
  • Amazon EKS クラスターの Kube-proxy は、Kubernetes と同じ互換性およびスキューポリシーが適用されます。

  • Kube-proxy は、Amazon EC2 ノードの kubelet と同じマイナーバージョンである必要があります。

  • Kube-proxy は、クラスターのコントロールプレーンのマイナーバージョンよりも新しいものにすることはできません。

  • Amazon EC2 ノードの kube-proxy バージョンは、コントロールプレーンより 2 つ以上前のマイナーバージョンにすることはできません。例えば、コントロールプレーンが Kubernetes 1.29 を実行している場合、kube-proxy マイナーバージョンは 1.27 より前にすることはできません。

  • 最近クラスターを新しい Kubernetes マイナーバージョンに更新した場合、Amazon EC2 ノードを同じマイナーバージョンに更新した後でkube-proxy をノードと同じマイナーバージョンに更新してください。

kube-proxy セルフマネージド型アドオンを更新するには
  1. クラスターにインストールされているアドオンがセルフマネージド型であることを確認します。my-cluster の部分は、自分のクラスター名に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name kube-proxy --query addon.addonVersion --output text

    エラーメッセージが返された場合、クラスターにセルフマネージド型のアドオンがインストールされています。このトピックの残りの手順は、セルフマネージド型のアドオンを更新することです。バージョン番号が返された場合、クラスターに Amazon EKS タイプのアドオンがインストールされています。更新するには、このトピックの手順ではなく「アドオンの更新」の手順を使用してください。アドオンタイプの違いがよくわからない場合は、「Amazon EKS アドオン」を参照してください。

  2. クラスターに現在インストールされているコンテナイメージのバージョンを確認します。

    kubectl describe daemonset kube-proxy -n kube-system | grep Image

    出力例は次のとおりです。

    Image:    602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.25.6-minimal-eksbuild.2

    出力例では、v1.25.6-minimal-eksbuild.2 がクラスターにインストールされているバージョンです。

  3. 602401143452region-code を前のステップの出力の値と置き換えて kube-proxy アドオンを更新しますv1.26.2-minimal-eksbuild.2 を、各 Amazon EKS クラスターバージョンで利用可能な最新のセルフマネージド kube-proxy コンテナイメージバージョン表に記載された kube-proxy バージョンと置き換えます。デフォルトまたは最小のイメージタイプのバージョン番号を指定できます。

    kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.26.2-minimal-eksbuild.2

    出力例は次のとおりです。

    daemonset.apps/kube-proxy image updated
  4. 新しいバージョンがクラスターにインストールされたことを確認します。

    kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3

    出力例は次のとおりです。

    v1.26.2-minimal-eksbuild.2
  5. 同じクラスターで x86 ノードと Arm ノードを使用しており、クラスターが 2020 年 8 月 17 日より前にデプロイされている場合。以下のコマンドにより kube-proxy マニフェストを編集して、複数のハードウェアアーキテクチャにノードセレクターを含めます。このオペレーションを行うのは 1 回限りです。マニフェストにセレクタを追加した後、アドオンを更新するたびに追加する必要はありません。クラスターが 2020 年 8 月 17 日以降にデプロイされている場合、kube-proxy は既にマルチアーキテクチャに対応しています。

    kubectl edit -n kube-system daemonset/kube-proxy

    エディタを使用して、次のノードセレクターをファイルに追加し、その内容を保存します。エディタ上で、このテキストを挿入する場所の例については、「GitHub」の CNI マニフェストファイル をご覧ください。これにより、Kubernetes はノードのハードウェアアーキテクチャに基づいて、正しいハードウェアイメージを取得できるようになります。

    - key: "kubernetes.io/arch" operator: In values: - amd64 - arm64
  6. クラスターが最初に Kubernetes バージョン 1.14 以降で作成されている場合は、kube-proxy には既にこの Affinity Rule が含まれているため、このステップはスキップできます。最初に Kubernetes バージョン 1.13 以前のバージョンで Amazon EKS クラスターを作成し、クラスターに Fargate ノードを使用することを考えている場合、kube-proxy マニフェストを編集して NodeAffinity ルールを含め、kube-proxy Pods が Fargate ノードでスケジュール設定しないようにしてください。この編集を行うのは 1 回限りです。Affinity Rule をマニフェストに一度追加したら、アドオンを更新するたびに追加する必要はありません。kube-proxy DaemonSet を編集します。

    kubectl edit -n kube-system daemonset/kube-proxy

    エディタで、次の Affinity Rule をファイルの DaemonSet spec セクションに追加した後、変更内容を保存します。エディタ上で、このテキストを挿入する場所の例については、「GitHub」の CNI マニフェストファイル をご覧ください。

    - key: eks.amazonaws.com/compute-type operator: NotIn values: - fargate