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.5
、v1.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
セルフマネージド型アドオンを更新するには
-
クラスターにインストールされているアドオンがセルフマネージド型であることを確認します。
my-cluster
の部分は、自分のクラスター名に置き換えます。aws eks describe-addon --cluster-name
my-cluster
--addon-name kube-proxy --query addon.addonVersion --output textエラーメッセージが返された場合、クラスターにセルフマネージド型のアドオンがインストールされています。このトピックの残りの手順は、セルフマネージド型のアドオンを更新することです。バージョン番号が返された場合、クラスターに Amazon EKS タイプのアドオンがインストールされています。更新するには、このトピックの手順ではなく「アドオンの更新」の手順を使用してください。アドオンタイプの違いがよくわからない場合は、「Amazon EKS アドオン」を参照してください。
-
クラスターに現在インストールされているコンテナイメージのバージョンを確認します。
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
がクラスターにインストールされているバージョンです。 -
と602401143452
を前のステップの出力の値と置き換えてregion-code
kube-proxy
アドオンを更新します
を、各 Amazon EKS クラスターバージョンで利用可能な最新のセルフマネージド kube-proxy コンテナイメージバージョン表に記載されたv1.26.2-minimal-eksbuild.2
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
-
新しいバージョンがクラスターにインストールされたことを確認します。
kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3
出力例は次のとおりです。
v1.26.2-minimal-eksbuild.2
-
同じクラスターで
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
-
クラスターが最初に 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