AKS(Azure Kubernetes Service)のUpgrade時の微妙な違いを把握する
イオンスマートテクノロジーの DevSecOps Div SREチーム @hikkie13 です。
突然ですが、AKS(Azure Kubernetes Service)を使っている良い子の皆さん、アップグレードは定期的に実施していますよね?
今回は小ネタとして、とあるパターンによってアップグレード中の動作に差異があるよ という話をします。(ある意味自分用メモです)
AKS(Azure Kubernetes Service)とは
AKSとはAzure Kubernetes Serviceの略称であり、Azureで提供されるマネージドのKubernetesです。
AKSのアップグレードについて
以下の記事で紹介をしていますのでご参考ください。
この記事にありますように、イオンスマートテクノロジーでは
- patch version upgrade... 自動
- minor version upgrade... 手動
でアップグレードを実施しています。
自動アップグレードと手動アップグレードで異なる動作をする
アップグレード作業をする前には、計画として実行時間の見積もりが必要になると思います。
が、実はこのアップグレード、、、とある要素で少々異なる結果となります。
ノードプール単位で並列で実行するケースと直列で実行するケースがある
クラスターが複数のノードプールを持つ場合、以下のような2パターンに分かれます。
直列
以下の図のように、ノードA-1 → ノードA-2 → ノードA-3 → ノードB-1 → ノードB-2 → ... といった具合にノードプールAが終わってからノードプールB → ノードプールC と順番にアップグレードが進んでいきます。
並列
以下の図のように、ノードA-1, B-1, C-1 → ノードA-2, B-2, C-2 → ... といった具合にノードプールAとBとCが同時並行でアップグレードが進んでいきます。
ノードプールの構成によってはアップグレードにかかる時間が何倍も変わりますね。
パターンの明確化と背景を考える
パターンをSupport Requestに問い合わせつつ、動作確認をしたところ
- 手動 アップグレード時はノードプール間で並列
-
自動 アップグレード時はノードプール間で直接
という動作のようです。
背景についてマイクロソフトの方と話す機会があったのですが、
- 手動時はエンジニアがその場にいる
- 自動時はエンジニアがその場にいない
ということから、自動時はより安全な動きにしているのではないかと思われます。
(とはいえ、ユーザー側で選択できても良い気がする...?)
まとめ
クラスターが複数のノードプールを持つ場合、以下の違いがある。
- 手動アップグレード時はノードプール間で並列
- 自動アップグレード時は安全を考慮してノードプール間で直列
以上、細かすぎて伝わらない(?)AKSの動きの差異についてまとめてみました。
みなさま、Happy Kuberenetes Lifeを!
イオングループで、一緒に働きませんか?
イオングループでは、エンジニアを積極採用中です。少しでもご興味をもった方は、キャリア登録やカジュアル面談登録などもしていただけると嬉しいです。
皆さまとお話できるのを楽しみにしています!
Discussion