Amazon EKSのバージョンアップ作業で大変だった事

この記事を書いたチーム:tenko

AWS EKSとは

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

Amazon Elastic Kubernetes Serviceの略で(AWS) 上で、簡単にKubernetesのコントロールプレーンを構築出来るマネージド型サービスです。
EKS
のアイコン

・なぜアップデート作業が必要なのか
EKSにはサポート期間があり、標準サポートと延長サポートがあるがサポート期間を過ぎると余計にコストが掛かって勿体ない
延長サポート期間が過ぎるとAWS側で自動的にアップデートが行われる→タイミングは不明
コストの観点と運用の観点でも定期的なアップデートは行う事が望ましいです。

作業の大まかな流れ

EKSのコントロールプレーンのアップデート
コンソール画面から対象のクラスターを選択してアップデートを行う。

EKSで使っているアドオンのバージョンアップ
クラスターにインストールされているAWS EKSのアドオンをコントロールのバージョンに合わせアップデートを行う。

・ノードグループのアップデート
クラスターのアップデートが完了したら、ノードグループのアップデートを行う。

・最後にEKS環境で使っているその他のツールアップデート
k8s オートスケーラーやダッシュボードなどのアップデートを行う。

上の内容を今回上げたいバージョンまで繰り返し行う。

作業の際に起こった事

・ワーカーノードのバージョンアップ後にPodが急に停止して起動しなくなる現象が発生
こちらは今までのバージョンと新しいバージョンで必要なアドオンがインストールされていない為、Podの起動に失敗していた。
→こちらは新しいバージョンに必要なアドオンのインストールとアドオンのバージョンアップで解決

・強制アップデートでワーカーノードアップデートに失敗する
今回は少し急いで対応する必要があったのとお客様へのダウンタイムが発生する可能性を伝えてお客様の了承を得ていたので、強制アップデートで対応しました。ワーカーノードのノードグループが多かったので一気にまとめてアップデートしようとするとノードグループのアップデートに失敗しました。
1ノードグループ毎にアップデートを行うようにする事で解決

自前で構築したKubernetesのアップデート作業も行った際はもっと多くのエラーが発生して大変だった記憶があるので、それに比べたらまだ少ないと思いました。

やってみての感想と次回への課題

・やってみた感想
EKSのバージョンアップ作業は初めての経験になりましたが、とても勉強になることが多く自分の中で得られるものも多かったと思います。

・次回への課題
今回はv1.23からv1.29までのアップデートを行いましたが、新しいバージョンが発表されたら可能な限りすぐに最新バージョン又は最新バージョンの1つ古いバージョンにする必要があると感じました。やはり一気にバージョンアップを行う事で障害になる可能もあります。また今回は強制アップデートで対応しましたが、可能であればダウンタイムの少ないローリングアップデートの方法も調査して行うようにしたいと思います。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス