【EKS】クラスターバージョンを更新する手順

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

dashboard

前提


今回は、下記ケースの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の指摘に対して、合格と表示されていれば、更新による影響は発生しない。

dashboard

Cluster Autoscalerへの影響

Cluster Autoscalerとは、クラスター内のノード数を動的に増減させる機能である。

Cluster Autoscalerのバージョンは、EKSクラスターと合わせる必要があるため、EKSクラスターのバージョンアップでは影響が発生する可能性がある。

Cluster Autoscalerのバージョンアップについても、後続の記事で説明する。

バージョンアップ手順


Cluster Autoscalerのバージョンを、EKSクラスター更新後のバージョンに変更する

  1. 下記リリースを確認し、更新後のクラスターバージョンのCAリリースがあることを確認する

Releases · kubernetes/autoscaler

dashboard

  1. 下記コマンドのうち、{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を記載

  1. 下記コマンドを実行し、正常にImageのバージョンが更新されたことを確認する
kubectl describe pod cluster-autoscaler-xxxxxxxx -n kube-system

EKSクラスターのバージョンを更新する

  1. 下記コマンドを実行し、クラスターをアップデートする
eksctl upgrade cluster --name <cluster-name> --version 1.29 –approve
  1. 下記コマンドを実行し、現在のクラスターバージョンを確認する
aws eks describe-cluster --name <cluster-name> --query "cluster.version"

※EKSクラスターのバージョンアップの詳細はAmazon EKS クラスターの Kubernetes バージョンの更新を参照

ローカルのパッケージのバージョンを更新する

各Releaseを確認し、必要に応じてバージョンを更新する