GKE の費用と温室効果ガス排出量を抑えるための、小さな労力で大きな効果を生む 4 つの方法

Google Cloud Japan Team
※この投稿は米国時間 2022 年 11 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。
クラウド費用の管理は、組織にとって常に最優先事項です。ではどのように行えばよいのでしょうか。無駄なリソースを明らかにし、パフォーマンスや可用性を損なわない最良の最適化方法を見つけるのには、困難が伴う場合があります。
この問題について Google Kubernetes Engine(GKE)チームは、できる限りお役に立ちたいと考えています。また、私たち自身も、最近実施された内部のキャパシティ プランニング演習に参加した後、最適化の余地がある問題に気付かされました。Google の社内調査によると、GKE フリート全体のクラスタの最大 10 分の 1 が常にアイドル状態になっていたのです。さらに、プロビジョニングが過剰なワークロードのうち 40% では、実際に使用する 30 倍ものリソースがプロビジョニングされており、ワークロードの 11% では、必要なリソースの 100 倍以上がプロビジョニングされていました。
幸い、この無駄な容量を再利用できるさまざまなベスト プラクティスがあり、その多くは GKE に直接組み込まれています。ここでは、リソースを再利用し GKE の費用を最適化するための、小さな労力で大きな効果をもたらす 4 つの方法をご紹介します。嬉しいことに、無駄なリソースを再利用して以下の手法を導入すると、管理オーバーヘッドも最小限に抑えられ、温室効果ガス排出量も削減されます。
それでは詳しく見ていきましょう。
戦略 1: GKE クラスタ オートスケーラーで「optimize-utilization」プロファイルを有効にする
レベル: 容易
影響: 中
vCPU とメモリのサイズ適正化は、GKE の費用を節約できる主な方法として挙げられます。英国に拠点を置くオンライン相乗りサービスの BlaBlaCar は、この方法を最近実施した結果、CPU 使用率が 25% から 53% に上がりました。GKE には、これと同じ効果を実現するために有効な組み込みツールがいくつか用意されています。たとえば、GKE クラスタ オートスケーラーは、ワークロードの需要に基づいてクラスタのノードプールを自動的にサイズ変更するメカニズムを複数サポートしており、オートスケーラーのプロファイルを指定すれば適用できます。GKE フリート全体で Google Cloud のお客様のクラスタを分析した結果、optimize-utilization プロファイルを有効にすると、未割り当ての vCPU とメモリを平均で 20% 削減できると推定されます。大半のクラスタでは、有効化してもアプリケーションの動作やパフォーマンスに影響しませんが、必要な vCPU や VM の数を大幅に削減できます。
取るべきステップ:


注: クラスタ オートスケーラーの optimize-utilization プロファイルは、ワークロードの中断や負荷を最小限に抑えながら、クラスタの費用を削減するように設計されています。ただし、リソース使用率の急増が恒常的に発生するアプリケーションや、起動や準備に時間がかかるアプリケーションが含まれるクラスタにはおすすめしません。
....未割り当ての vCPU とメモリを平均で 20% 削減できると推定されます。
戦略 2: アイドル状態のクラスタをシャットダウンする
レベル: 容易
影響: 中~大
使用していないクラスタをオフにします。この操作は非常に簡単ですが、ユーザーが実行している GKE クラスタの 10 分の 1 が常にアイドル状態になっている可能性があることが判明しています。「アイドル状態のクラスタ」の定義は複数ありますが、次のような特徴があります。
Pod が実行されていない
最新ではなく、コントロール プレーン ノードへの接続が失われようとしている
API の操作やオブジェクトの変更が長時間行われていない
Pod 数に変更がなく、非常に低い使用率レベルで実行されている
アイドル状態(またはほぼアイドル状態)のクラスタは簡単にシャットダウンできます。
まず、Cloud Monitoring の「GKE Active/Idle clusters」サンプル ダッシュボードを開いて、実際にアイドル状態のクラスタや、使用率が大幅に低いクラスタを確認します。
そのためには、Cloud Monitoring -> [ダッシュボード] -> [サンプル ライブラリ] に移動し、[カテゴリ] で [Google Kubernetes Engine] を選択します。「GKE Active/Idle clusters」はダッシュボードのサンプル リストに表示されます。
クラスタの状態を確認したら、任意の方法でクラスタをシャットダウンします。


…クラスタの 10 分の 1 が常にアイドル状態になっている可能性があることが判明しています。
戦略 3: 最適化とサイズ適正化のルーチンを確立する
レベル: 容易
影響: 中~大
クラスタとワークロードのサイズを不適切に設定すると、大量の無駄が生じます。上述のとおり、プロビジョニングが過剰なワークロードのうち 40% では、実際に使用する 30 倍ものリソースがプロビジョニングされており、ワークロードの 11% では、必要なリソースの 100 倍以上がプロビジョニングされていることが Google の内部調査で判明しています。
GKE には、クラスタのサイズを適正化できる複数のツールが用意されています。
GKE の組み込みの費用分析情報を確認して、サイズの適正化によって最も効果が得られるクラスタとワークロードをすばやく見つけます。
次に、GKE の新しい組み込みのワークロード サイズ適正化機能を使用して、デプロイメントのサイズを垂直方向に適正化する方法について指針を得ます。
GKE のワークロードのサイズ適正化に関する提案に納得したら、垂直 Pod オートスケーラーを有効にしてプロセスを自動化し、運用上の労力を削減することを検討します。
詳細については、GKE 自動スケーリングに関するベスト プラクティスと動画ガイドをご覧ください。
プロビジョニングが過剰なワークロードのうち 40% では、リクエストされ実際に使用されるリソースの 30 倍ものリソースがプロビジョニングされています。
戦略 4: GKE Autopilot に移行する
レベル: 容易から普通
影響: 大
インフラストラクチャ費用の削減は重要ですが、運用費用の削減はさらに有益な場合があります。より安定したセキュリティの高い環境のメリットを受けながら、貴重なエンジニアリング人材を運用業務から解放することができます。
これは、GKE Autopilot 運用モードで実現されます。GKE Autopilot は、プロビジョニングされたインフラストラクチャではなく Pod のリソース リクエストごとに料金が決まります。したがって、プロビジョニングした未使用のインフラストラクチャに対しては課金されないという単純な理由により、すぐに費用の削減を実現できます。また、GKE Autopilot は、無駄と労力の重要な原因の一つである非効率的なビンパッキングを解消します。さらに、構成のベスト プラクティスがデフォルトで実装されるため、適切な環境設定に必要な Kubernetes の専門知識が少なくて済み、システム管理に費やす時間が短縮されます。
正規価格のみに基づくと、GKE Autopilot では各コアの 1 時間あたりの料金が高く見えるかもしれませんが、実際は異なる場合があります。GKE フリート全体を確認したところ、すぐに GKE Autopilot に移行した場合、全クラスタの 45% で料金が抑えられることがわかりました。
GKE Autopilot の使用を開始する場合、次のことを行いましょう。
GKE Autopilot とそのメリットや制限事項を確認する
GKE Autopilot の紹介動画を視聴する
Autopilot クラスタを作成する
すぐに GKE Autopilot に移行した場合、全クラスタの 45% で料金が抑えられることがわかりました。
GKE の費用をどれくらい削減できましたか?
Google Cloud では、お客様が環境を簡単かつ費用対効果の高い方法で設定、実行、管理できるよう取り組んでいます。先に述べた 4 つの戦略をすぐに導入すると、早ければ来月にも GKE の請求額に明らかな変化が見られると考えています。さらには、GKE 管理者の負荷が軽減され、温室効果ガス排出量も削減できる場合があります。ハッシュタグ #GKEoptimized をつけて、ソーシャル メディアで GKE 最適化の取り組みの結果を Google と世界に共有してください。
- GKE プロダクト マネージャー Roman Arcea
- プロダクト マネージャー Gari Singh