概要
AWSのEKSサービスを利用して構築したクラスター環境でKubernetesのバージョンアップ作業を実施していたところ、
Upgrade insightsにて以下のような警告メッセージに遭遇しました。
check version of kube-proxy in cluster to see if upgrade would cause non compliance with supported Kubernetes kube-proxy version skew policy.
上記メッセージの内容としては、EKSクラスター内のkube-proxyのバージョンが、Kubernetesのバージョンアップに伴ってサポート対象外になる可能性があることへの警告になります。
Kubernetesでは、各コンポーネント毎にバージョンスキュー(version skew)ポリシーが定められており、 互換性のあるバージョン範囲が決められています。
kube-proxyの場合、kube-apiserverのマイナーバージョンと比べ、3つ古いマイナーバージョンまでがサポート対象となります(kube-proxyのバージョンが1.25より前の場合は2つまで)
今回の作業ではEKSクラスターのKubernetesマイナーバージョンを複数段階上げる作業を実施していたため、バージョン差異が広がり、警告メッセージが出力されたようです。
当該メッセージへの対策として、kube-proxyのバージョンアップ方法を調査・検証し、結果をまとめました。
検証環境
検証環境として使用しているEKSクラスター環境のバージョン 1.31になります。
EKSクラスターのkube-proxyには、セルフマネージド型とEKSマネージド型があります。
今回の検証では、両方のバージョンアップ方法を確認しています。
検証手順
セルフマネージド型
現行バージョン確認
以下のコマンドを実行し、現在のkube-proxyのバージョンを確認します。
kubectl describe daemonset kube-proxy -n kube-system | grep Image
今回の検証環境は、バージョン1.31を利用しているため、以下のような結果が出力されました。
Image: 602401143452.dkr.ecr.us-east-2.amazonaws.com/eks/kube-proxy:v1.31.2-minimal-eksbuild.3
kube-proxyバージョンアップ
AWSマネジメントコンソールでEKSクラスター環境のKubernetesバージョンを1.32に上げた後、
以下のコマンドを実行して、kube-proxyデーモンセットが利用しているイメージのバージョンを1.32に更新します。
kubectl set image daemonset/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.us-east-2.amazonaws.com/eks/kube-proxy:v1.32.5-minimal-eksbuild.2
kube-proxyイメージのURLは環境、バージョンに合わせて変更してください。
利用できるバージョンの情報は以下に記載されています。
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/managing-kube-proxy.html
デーモンセットの設定更新が成功すると、kube-proxyポッドが再起動します。
$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
aws-node-8vq4g 2/2 Running 0 9m24s
aws-node-dblbw 2/2 Running 0 21m
aws-node-r6b2s 2/2 Running 0 16m
aws-node-s5bt5 2/2 Running 0 34m
aws-node-wp8wp 2/2 Running 0 28m
coredns-6b94694fcb-7cktt 1/1 Running 0 15m
coredns-6b94694fcb-ccjcz 1/1 Running 0 14m
ebs-csi-controller-5fcccb949b-5m55h 6/6 Running 0 34m
ebs-csi-controller-5fcccb949b-r7wkm 6/6 Running 0 15m
ebs-csi-node-6grp7 3/3 Running 0 34m
ebs-csi-node-psh47 3/3 Running 0 28m
ebs-csi-node-rvbz9 3/3 Running 0 21m
ebs-csi-node-wt897 3/3 Running 0 16m
ebs-csi-node-wwwvp 3/3 Running 0 9m24s
kube-proxy-2sc7j 1/1 Running 0 34s
kube-proxy-5bv2c 1/1 Running 0 30s
kube-proxy-h4l87 1/1 Running 0 44s
kube-proxy-shkkg 1/1 Running 0 41s
kube-proxy-zm5nd 1/1 Running 0 38s
EKSマネージド型
kube-proxyアドオンの更新
EKSマネージド型のkube-proxyはアドオンとして管理されています。
AWSマネジメントコンソールで対象EKSクラスターの詳細画面を開き、アドオンタブを開くと、
以下のようにkube-proxyアドオンが表示されますので、 対象アドオンのバージョンの更新ボタンをクリックします。

アドオン設定の編集画面が開いたら、アドオンのバージョン設定を更新し、変更内容を保存ボタンをクリックします。

更新イベントのステータスが成功に変わったら、バージョンアップ完了です。

参考記事
https://kubernetes.io/releases/version-skew-policy/
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/managing-kube-proxy.html
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/kube-proxy-add-on-self-managed-update.html