GKE Autopilotを使って、Wordpress環境を構築したときのTipを共有したいと思います。
GKE AutopilotはGKEの新しい運用モードで、Control PlaneとNodeをGoogleに運用管理してもらえます。
GKE Autopilotで構築したクラスタは3つのAZで構成されるリージョンクラスタです。このため、3つのPodをデプロイすると各AZ上にPodが均等配置されると考えていました。しかし、実際はそうではありません。Autopilotはデフォルトで2つのAZを使います。このため、3つのPodをデプロイした時Podは3つのAZのうち2つのAZに配置されます。
せっかく3つのAZがあるのに2つしか使えないことに納得できません。なにか方法があるはず。
KubernetesのPod Topology Spread Constraintsを使うことで、Podの分散を制御できそうです。ただ、これを使うだけでは3つのAZへの均等配置は実現できそうにありません。あくまでPodの均等配置を制御してくれるだけで、Nodeを新しく作ってくれるわけではありません。Control Planeが認識しているNodeに均等配置するための機能です。
公式ドキュメント→Pod Topology Spread Constraints
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
Nodeのデプロイ状況を確認
Podのデプロイ状況を確認
オレンジの枠内を確認すると、3つのPodが3つのAZに分散配置されていることがわかります。これで、AutopilotでもHAなデプロイが実現できました。