EKSのKubernetesのパッチバージョンを更新する

2023年5月30日

Amazon EKS

EKS の Kubernetes のパッチバージョンの更新、たとえば 1.23.13 から 1.23.17 への更新など、末尾のパッチバージョンの更新についての備忘録です。EKS のバージョンの更新については Amazon EKS クラスターの Kubernetes バージョンの更新 - Amazon EKS に詳しく書いてあるのですが、eksctl update cluster コマンドを実行してもパッチバージョンの更新は行われなかったので調べた内容になります。

目次

  1. コントロールプレーンのパッチバージョンは自動で更新される
  2. ワーカーノードのパッチバージョンは手動で更新が必要
  3. コントロールプレーンとワーカーノードのパッチバージョンはズレても大丈夫

コントロールプレーンのパッチバージョンは自動で更新される

EKS のコントロールプレーンはプラットフォームバージョンという仕組みで Kubernetes のパッチバージョンの管理を行なっています。プラットフォームバージョンは eks.7 のように表記され、EKS 1.23 の場合、eks.7 は Kubernetes 1.23.17 に対応します。EKS のプラットフォームバージョンと Kubernetes バージョンの対応関係は Amazon EKS のプラットフォームバージョン - Kubernetes バージョン 1.23 - Amazon EKS をご確認ください。

プラットフォームバージョンは自動で更新されます。

Amazon EKS は、既存のすべてのクラスターを、対応する Kubernetes マイナーバージョン用の最新の Amazon EKS プラットフォームバージョンに自動的にアップグレードします。

Amazon EKS のプラットフォームバージョン - Amazon EKS

プラットフォームバージョンが上がると、eks.8 のように数字が増えていきます。新しいプラットフォームバージョンがリリースされてから、クラスタに適用されるまでには時間がかかることがあります。3 ヶ月くらいバージョンがあがらず、その後、一気に 2 バージョン上がることもあります。詳細は Amazon EKS のプラットフォームバージョン - Amazon EKS を参照してください。

新しいプラットフォームバージョンを EKS に手動で適用することはできないようです(2023 年 5 月、eksctl v0.143.0 で確認)。もし新しいプラットフォームバージョンを強制的に適用したい場合は、新しい EKS クラスタを新規で作成して移行する必要がありそうです。これについては github に機能要望 があったので、今後改善されていくかもしれません。

ワーカーノードのパッチバージョンは手動で更新が必要

コントロールプレーンの Kubernetes のパッチバージョンは自動で更新されますが、ワーカーノードのパッチバージョンは手動で更新する必要があります。

ワーカーノードにマネージド型ノードグループを利用している場合、ワーカーノードの Kubernetes のバージョンは AMI で管理されています。新しい AMI のリリースがある場合は、ノードグループで利用されている AMI を最新の AMI に更新することができます。更新方法について詳しくは マネージド型ノードグループの更新 - Amazon EKS を参照してください。

更新の動作は、マネージド型ノードの更新動作 - Amazon EKS に詳しく書かれています。1 台ずつノードから pod をドレインして、新しいノードに pod を置き換えていく動きになっているようです。

コントロールプレーンとワーカーノードのパッチバージョンはズレても大丈夫

このような仕様のため、EKS を運用してしばらくすると、コントロールプレーンのパッチバージョンが自動で上がっていき、ワーカーノードのパッチバージョンは何もしなければそのままで、コントロールプレーンとワーカーノードでバージョンがずれていきます。

これについては、先に紹介した Amazon EKS のプラットフォームバージョン - Amazon EKS に、互換性が保たれて問題がないことが説明されています。

すべてのパッチバージョンは、特定の Kubernetes マイナーバージョンにおいて、EKS コントロールプレーンとノード AMI との間で互換性を持ちます。

Amazon EKS のプラットフォームバージョン - Amazon EKS

コントロールプレーンとワーカーノードのバージョンは揃っていたほうが問題が起きにくいと思いますので、定期的にワーカーノードのパッチバージョンを更新して、コントロールプレーンのバージョンと合わせるのが良いと思います。

-技術ブログ
-