https://images.microcms-assets.io/assets/83abe3ff71704bde831915fd55332987/2490229a1a4a40cea4d203bb16dced0e/OGP-GKE%20Autopilotemptygif.png
最終更新日:2/24/2023
#K8s
PodSpreadTopologyで3つのAZにPodを均等配置しました。

GKE Autopilotを使って、Wordpress環境を構築したときのTipを共有したいと思います。

GKE Autopilotとは?

GKE AutopilotはGKEの新しい運用モードで、Control PlaneとNodeをGoogleに運用管理してもらえます。

GKE AutopilotのHA (高可用性)

GKE Autopilotで構築したクラスタは3つのAZで構成されるリージョンクラスタです。このため、3つのPodをデプロイすると各AZ上にPodが均等配置されると考えていました。しかし、実際はそうではありません。Autopilotはデフォルトで2つのAZを使います。このため、3つのPodをデプロイした時Podは3つのAZのうち2つのAZに配置されます。

3つのAZにデプロイしたい

せっかく3つのAZがあるのに2つしか使えないことに納得できません。なにか方法があるはず。

Pod Topology Spread Constraints

KubernetesのPod Topology Spread Constraintsを使うことで、Podの分散を制御できそうです。ただ、これを使うだけでは3つのAZへの均等配置は実現できそうにありません。あくまでPodの均等配置を制御してくれるだけで、Nodeを新しく作ってくれるわけではありません。Control Planeが認識しているNodeに均等配置するための機能です。

公式ドキュメント→Pod Topology Spread Constraints

Pause Job

3つのAZに均等配置するためには先に3つのAZにノードを作り、Podを少なくとも1つ稼働させ、Control Planeが3つNodeがあることを認識する必要があります。そこで、Deploymentを展開する前に、nodeSelector で各AZを指定したJobを起動します。これにより、3つのAZに最低一つのNodeが作られます。

William Dennissさんのブログを参考にしました。→HA 3-zone Deployments with PodSpreadTopology on Autopilot

3ゾーンデプロイができました

Nodeのデプロイ状況を確認

Podのデプロイ状況を確認

オレンジの枠内を確認すると、3つのPodが3つのAZに分散配置されていることがわかります。これで、AutopilotでもHAなデプロイが実現できました。