Upgrade to Pro — share decks privately, control downloads, hide ads and more …

イオンスマートテクノロジーで実践しているAKSアップグレード戦略/the-aks-upgrade-strategy-of-AEON

AEON
March 26, 2024
890

 イオンスマートテクノロジーで実践しているAKSアップグレード戦略/the-aks-upgrade-strategy-of-AEON

AEON TECH HUB #2 【2024年のAKSアップグレードを語る】ベストプラクティスと実践事例(https://aeon.connpass.com/event/308120/) で発表した「イオンスマートテクノロジーで実践しているAKSアップグレード戦略」の資料です。

AEON

March 26, 2024
Tweet

More Decks by AEON

Transcript

  1. ⾃⼰紹介 齋藤光( @hikkie13 ) イオンスマートテクノロジー株式会社 CTO室 SREチーム所属 (2022/5⼊社) Kubernetesアップグレードに失敗しない漢 を⽬指している

    趣味:ヨガ 直近の登壇: SRE NEXT 2023 「エンタープライズ企業でのSRE⽴ち上げ挑戦の際に 意識した事と気付き、現在地とこれから」 CloudNative Days Tokyo 2023 「イオンがKubernetesを採⽤してどうなった?」
  2. 基本的なアップグレード戦略(バージョン) • minorバージョン(x.y.zのy)のn-2 がサポート対象 o つまり約半年に1回アップグレードを実施している o ASTは有史以来アップグレードを継続して実施してきた(えらい) • 現在は、1.27で稼働中

    • ※AKSとkubernetesのバージョンの サポート期間は⼀致していないことに注意 原則的にMicorsoft社の推奨に従う。 Azure Kubernetes Service (AKS) でサポートされている Kubernetes のバージョン
  3. 基本的なアップグレード戦略(バージョン) • patch(x.y.zのz)のアップグレードも原則実施 o ここは⾃動アップグレード(aksManagedAutoUpgradeSchedule: patch) • Long Term Supportを利⽤しているか?

    https://learn.microsoft.com/ja-jp/azure/aks/long-term-support o 利⽤しない⽅針 o ツール(observabilityツールなど)への影響を考えたくない o 1回のアップグレードでの差分が⼤きくなるのでリスクが⼤きくなる o 普通に新機能を使いたい
  4. • ⼀般的に、in-placeとblue/greenの2つの⽅式がある。 o in-place § 同⼀クラスタ内でRolling Upgradeをする § ノードの作成、削除が発⽣する。その際にpodなどがdrainされる。 o

    blue/green § 新しいバージョンのクラスタを 作成しトラフィックを切り替え アップグレードの実施⽅法(切替) https://learn.microsoft.com/ja-jp/azure/architecture/guide/aks/blue-green-deployment-for-aks
  5. • ASTでは、クラスタによって実施⽅法を分けている。 in-placeとblue/greenの選択するための⽐較軸 アップグレードの実施⽅法(切替) ⽅式 In-place blue/green 作業コスト ◦ ×(クラスタの構築、トラフィック切替の準備)

    切替時間 △(アプリケーションの起動時間や クラスタの設定次第) ◦(当⽇切り替えるだけ。重みづけルー ティングの場合は設定次第だが、in- placeよりは短いのでは) Rollbackの可否 × ◦ 切り替えの制約 ×(1バージョンずつ) ◦ 作業時の サービス影響 △(drain時に一時的にキャパシティが 落ちる) ◦
  6. いろんな失敗を経て今に⾄る • Blue/greenで古いクラスタからアプリを削除せず停⽌ →何かの拍⼦で起動した際に、アプリケーションも起動して障害に😇 • デフォルトで1台ずつsurgeするためnodeの台数が多いと時間が⾮常にかかる。 • pdbの設定がされていないのでエラーポコポコ • 設定したpdbが邪魔をしてアップグレード進まない

    • graceful shutdownしていないのでエラーポコポコ • 使われていないアプリケーションが放置されているため起動せず、アップグレード失敗 • patchバージョン?固定でしょ • アプリのFrameworkが古いままAKSアップグレードしたらリソース使⽤量爆増
  7. アップグレードを安⼼し、⾃信を持って実施するための準備 Cluster/pod設定 • max surge sizeの設定 (ノード サージ アップグレードのカスタマイズ) o

    Microsoftの推奨は33%だが、慎重めに10%で設定。今後徐々に上げていきたい o ポータルからは設定できないので⾒落としがち。ASTではTerraformで設定 • pdbの設定 o maxUnavailable:10%で設定 • graceful shutdown/prestop hookの設定
  8. AKS運⽤の練度を上げていくために‧‧‧ 安⼼して失敗できる状況を作ることが⼤切 • 失敗、問題を検知できること o observabilityの向上 • 失敗時のリカバリ o クラスタをいつでもIaCで作り直せる⼤⼈の余裕

    o アプリケーションをCI/CDパイプラインでいつでもデプロイし直せる⼤⼈の余裕 o 追加ツールをCI/CDパイプラインでいつでもデプロイし直せる⼤⼈の余裕 ⼤切なことは、普段の運⽤のブラッシュアップと重なることが多い
  9. AKS運⽤の練度を上げていくために‧‧‧ 安⼼して失敗できる状況を作ることが⼤切 • Azure Kubernetes Services のトラブルシューティング に関するドキュメント • AKSのアップグレードのリトライ⽅法を把握しておく

    o ポータルからはリトライできないので初めて遭遇すると焦る。 • リトライコマンド(原因を解決させた上で実⾏) ※SR起票しようとすると、このコマンドを提案された。この体験は👍