【EKS】クラスターバージョンを更新する手順
本記事では、EKS クラスター(Kubernetes APIサーバー)のバージョンを更新する手順について解説する。

前提
今回は、下記ケースのEKSクラスターの更新を行う。
- バージョンアップ元:EKS 1.28
- バージョンアップ先:EKS 1.29
- Cluster Autoscaler(CA)を利用
説明
EKSを運用していく上でバージョンアップ必要なサービスは大きく以下の3つに分けられる。
※ここでいうEKSクラスターのバージョンアップとは、EKSにおけるAPIサーバーのバージョンアップであり、その管理自体はAWSが行っている。
- EKSクラスター(kubernetes APIサーバー、kubernetes)
- EKSノードグループ
- EKSアドオン
- ALB Load Balancer Controller
クラスター以外の3つのバージョンアップ手順についても、本ブログで詳細に解説している。
ダウンタイム・影響
バージョンアップ中のアプリケーションへのダウンタイム
EKSクラスターのバージョンアップ中に、そのEKSでホストしているアプリケーションに対して、ダウンタイムは発生しない。
AWSが管理しているAPIサーバーであること、そしてアプリケーションをホストしているノードグループへのバージョンアップではないことから、作業中にアプリケーションへのダウンタイムは発生しない。
バージョンアップによるアプリケーションへの影響
EKSクラスターのバージョンアップ中や後に、アプリケーションへの影響は発生する可能性がある。 kubernetesで利用されるAPIの廃止・変更があった場合、バージョンアップ後に、APIなどが利用出来ないなどといった影響が発生する可能性がある。
なお、AWSでは、EKSコンソールの「Upgrade Insights」タブから、EKSのバージョンごとで非推奨・削除予定となっているAPIを確認できる。 Upgarade Insightsの指摘に対して、合格と表示されていれば、更新による影響は発生しない。

Cluster Autoscalerへの影響
Cluster Autoscalerとは、クラスター内のノード数を動的に増減させる機能である。
Cluster Autoscalerのバージョンは、EKSクラスターと合わせる必要があるため、EKSクラスターのバージョンアップでは影響が発生する可能性がある。
Cluster Autoscalerのバージョンアップについても、後続の記事で説明する。
バージョンアップ手順
Cluster Autoscalerのバージョンを、EKSクラスター更新後のバージョンに変更する
- 下記リリースを確認し、更新後のクラスターバージョンのCAリリースがあることを確認する
Releases · kubernetes/autoscaler

- 下記コマンドのうち、{x.x.x} を1で確認したリリースバージョンに書き換え、実行する
kubectl set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:v{x.x.x} -n kube-system
※今回は1.29.2を記載
- 下記コマンドを実行し、正常にImageのバージョンが更新されたことを確認する
kubectl describe pod cluster-autoscaler-xxxxxxxx -n kube-system
EKSクラスターのバージョンを更新する
- 下記コマンドを実行し、クラスターをアップデートする
eksctl upgrade cluster --name <cluster-name> --version 1.29 –approve
- 下記コマンドを実行し、現在のクラスターバージョンを確認する
aws eks describe-cluster --name <cluster-name> --query "cluster.version"
※EKSクラスターのバージョンアップの詳細はAmazon EKS クラスターの Kubernetes バージョンの更新を参照
ローカルのパッケージのバージョンを更新する
各Releaseを確認し、必要に応じてバージョンを更新する
- eksctl
- kubectl