知識を深めてコスト削減: GKE 費用最適化インサイトによる Kubernetes の最適化方法
Google Cloud Japan Team
※この投稿は米国時間 2022 年 2 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。
Kubernetes ユーザーと話してわかったことがあります。 信頼性、パフォーマンス、費用対効果を最適化するのは、規模が大きい場合は特に、非常に難しいということです。
このため、少し前に GKE 費用最適化インサイトをリリースしました。これは、Google Cloud Console 内のタブで、Google Kubernetes Engine のクラスタやワークロード全体で、最適化の機会を最小限の労力で自動的に発見するのに役立ちます。
この機能を使うと、実際に使用されたリソース、リクエストされたリソース、割り当てられたリソースを公開することで、選択した期間におけるクラスタの状態を把握できます。クラスタ上で実行されているワークロードでは、実際に使用されたリソースとリクエストされたリソース、および設定された制限が表示されるため、 ワークロード レベルでのきめ細かな最適化を適切な規模で行えます。
GKE 費用最適化インサイトは、リリース直後からすぐに好評をいただいています。たとえば、ホテル検索プラットフォームを提供する Trivago のサイト信頼性エンジニアである Arne Claus はこう話しています。「新しい GKE 費用最適化インサイトはクラスタとワークロードレベルで費用最適化の機会を特定するのに役立ち、すぐに実行に移すことができています。使い始めて数週間で、Trivago チームはいくつかのクラスタの費用とパフォーマンスのバランスの問題を見つけ、改善しました。」
本日、GKE 費用最適化インサイトをプレビュー版から一般提供に移行したことをお知らせします。これに伴い、日々の最適化のルーティーンに役立ついくつかの改善も行いました。一例として、リソース リクエストが不十分なため不安定になる恐れのあるプロビジョニング不足のワークロードを簡単に発見できるようになりました。
最適化の機会についてのインサイトが得られたところで、GKE の信頼性、パフォーマンス、費用対効果に最も役立っているのはどういった機能なのか、また、GKE の費用最適化のためにチームがどんなリソースを利用できるのかを振り返ってみましょう。
パブリック クラウドのマネージド Kubernetes サービスには、Kubernetes クラスタを最適化されていない方法で使用してしまいかねない 4 つの落とし穴があります。
文化 - パブリック クラウドを導入しているチームの多くは、GKE のような従量課金制のサービスを扱ったことがありません。そのため、リソースの割り当てやアプリのデプロイのプロセスが、費用にどう影響するかをよく理解していません。新しい GKE 費用最適化インサイトは、チームがこういった環境をより理解するのに役立ち、費用、信頼性、パフォーマンスのニーズのバランスを取るためのインサイトを提供して、ビジネスの価値向上に貢献します。
ビンパッキング - アプリをノードに効率的に圧縮するほど、節約額が大きくなります。実際の使用量に基づいて適切な量のリソースをリクエストするようにすることで、アプリをノードに効率的に圧縮できます。GKE 費用最適化インサイトでは、クラスタビューの灰色のバーで、ビンパッキングのギャップを特定できます。
アプリのサイズ適正化 - クラスタにデプロイされているオブジェクトに対して、適切なリソース リクエストとワークロードの自動スケーリング ターゲットを構成できるようにする必要があります。Pod に設定するリソースの量が正確であるほど、アプリがより確実に実行されるようになります。またほとんどの場合、クラスタの空き容量が大きくなります。GKE 費用最適化インサイトでは、クラスタビューとワークロード ビューの両方の緑色のバーで、適正サイズの情報を可視化できます。
需要ベースのダウンスケーリング - 需要が低い期間(たとえば夜間)の費用を節約するため、需要に合わせてクラスタをスケールダウンできるようにする必要があります。ただし、場合によっては排除できないワークロードがあることや、クラスタの構成に誤りがあるためにダウンスケールできないことがあります。
GKE 費用最適化インサイトは、こうした落とし穴を理解し、可視化するのに役立ちます。このような問題を解決するために、または最初から問題を起こさないようにするために、Google Cloud には事実上のソリューションが用意されています。たとえば、GKE 費用最適化インサイトを使って、モニタリングや FinOps への文化の改革を促進することができます。ビンパッキングを行いたくない場合は、Autopilot 運用モードを使用することもできます。また、ノードの自動プロビジョニングと使用率の最適化プロファイルを設定することで、ビンパッキングを最適化できます。アプリのサイズ適正化や需要ベースのダウンスケーリングには、GKE Pod オートスケーラーをご活用ください。従来の水平 Pod のオートスケーラーに加え、垂直 Pod 自動スケーラーや多次元 Pod オートスケーラーなどもご用意しています。
Autopilot、最適化 VM タイプ、ノードの自動プロビジョニング、Pod オートスケーラーなどの GKE の機能については、オーバープロビジョニングを削減するための GKE のベスト プラクティスで広く紹介しています。新たに見つかった最適化の機会についてのソリューションを学ぶことができます。
技術的な面についてさらに詳しく知りたい場合は、GKE の包括的なベスト プラクティス リストである費用最適化した Kubernetes アプリケーションを GKE 上で実行するためのベスト プラクティスをご覧ください。
最後に、視覚的に学習したい方には、YouTube の GKE 費用最適化の動画シリーズをご用意しています。専門家が、コスト最適化の重要なコンセプトを段階的に説明します。
- ソリューション アーキテクト、Fernando Rubbo
- GKE プロダクト マネージャー、Roman Arcea