EKS の Kubernetes のパッチバージョンの更新、たとえば 1.23.13 から 1.23.17 への更新など、末尾のパッチバージョンの更新についての備忘録です。EKS のバージョンの更新については Amazon EKS クラスターの Kubernetes バージョンの更新 - Amazon EKS に詳しく書いてあるのですが、eksctl update cluster
コマンドを実行してもパッチバージョンの更新は行われなかったので調べた内容になります。
目次
コントロールプレーンのパッチバージョンは自動で更新される
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
コントロールプレーンとワーカーノードのバージョンは揃っていたほうが問題が起きにくいと思いますので、定期的にワーカーノードのパッチバージョンを更新して、コントロールプレーンのバージョンと合わせるのが良いと思います。