EKSクラスター更新の必要性
AWSではEKSクラスターのバージョンが約3ヶ月おきに更新されます。
このマイナーバージョンのアップデートを放置していても将来的に強制的なアップデートの対象にされてしまう可能性がありますし、そもそも脆弱性のあるバージョンを使い続けることは理想的ではありません。
しかもAWSのドキュメントにもあるように1マイナーバージョンずつしか上げることができません。例えば現在のバージョンが1.18だとして、一気に1.21へアップデートするということはできないのです。
仮にできたとしてもPodの動作の冪等性の担保が難しくなりますので、新しいクラスターバージョンが公開される度にアップデートを行うことが理想だと言えます。
EKSクラスターのアップデート
EKSクラスターのアップデート自体は非常に簡単で、AWSコンソールから「今すぐ更新」を押下するか、eksctlコマンドを実行して更新することができます。
# クラスターのアップデート $ eksctl upgrade cluster --name <YOURE CLUSTER NAME> --approve
コンソール、コマンドどちらの場合も1時間近くアップグレードに時間がかかります。
注意点として、EKSクラスターのアップデート中にはサービスの瞬断が発生することです。
このわずかなダウンタイムは避けることができないので、アップデートのタイミングはユーザーアクセスが少ない時間帯を選ぶ必要があります。
また、EKSクラスターのアップデートにはIPアドレスを確保する必要があるため、サブネットのIPが枯渇していると失敗してしまいます。
アドオンの更新は手動で行う
EKSクラスターにはデフォルトで3つのアドオンが実行されています。
このアドオンもクラスターバージョンに合わせて更新する必要があります。
# クラスターのアドオンを更新 $ eksctl utils update-aws-node --cluster <YOURE CLUSTER NAME> --approve $ eksctl utils update-coredns --cluster <YOURE CLUSTER NAME> --approve $ eksctl utils update-kube-proxy --cluster <YOURE CLUSTER NAME> --approve
それぞれ上記のコマンドで更新が可能です。
ノードグループの更新
ノードグループの作成時にもEKSクラスターバージョンを指定しているはずなので、新しいバージョンのノードグループを作成する必要があります。
新しいノードグループを作成し、古いノードグループを削除する手順で入れ替えを行います。
なお、ノード入れ替え時のダウンタイムを防ぐためにPodDisruptionBudgetの設定が行われていることを確認しましょう。
おわりに
予行演習としてk8sのクラスターバージョンをアップデートしたので、その時に調べた注意事項をまとめました。
まだ業務レベルのEKSには触れていないので、この記事はあくまで勉強で得た知見程度に捉えていただけますと幸いです。
コメントを残す