GKE AutopilotのPodバーストとHPAで問題が起きた
久しぶりに記事書きました。 最近はObsidianに情報をまとめることが多いですが、もう少し気軽にアウトプットしようと思って書きました。 なので、詳細を調査はできていません。適当なこと書いてたらすみません。 発生した問題 タイトルにもある通りGKE Autopilotに関する話です。 AutopilotやPodバースト、水平Pod自動スケーリング(HPA)を知らない方はこれらの記事が参考になると思います。 Autopilot の概要 GKE で Pod バースト機能を構成する 水平Pod自動スケーリング 発生した問題についてですが、AutopilotクラスタでHPAを有効にしたDeploymentを上げたところ、Podが何度も再起動されながらHPAの最大値までPodが増えるといった挙動をしました。最大値までPodが増えたあとは再起動を何回もして不安定な状態でした。 原因 おそらく、Deploymentのresources.requestsが動かしているアプリに対して低すぎたことがこの状態を発生させていたと思います。 こんな感じの設定にしてました。 resources: requests: cpu: "50m" memory: "52Mi" limits: cpu: "500m" memory: "1Gi" コスト削減のため、リクエストを最も小さい値にしてました。 対象アプリがrequestsの値を大きく上回ってました。 Podバーストを有効にしているとlimitsはあくまで予約しているだけで実際にはリソースを確保していないということらしいので、以下のような解釈をしました。 requestsの値を大きく上回る HPAが適用される(HPAはCPUが80%で動くようにしてました。) Podが増える よくわからん挙動する 対処方法 requestsの値を対象アプリが要求している値の120%ぐらいにしました。 正常に動作するようになりました。 まとめ Autopilotクラスタを利用することで、Nodeの管理が必要なく運用が楽にはなりますが、自動で管理してくれる分よくわからないことも発生するので、手放しには喜べないなと思いました。 誰かの役に立ちそうなことがあれば、定期的に自分のメモを書いてるぐらいの感覚でブログを更新したいという気持ちです。