コンテンツに移動
Containers & Kubernetes

GKE の内側: クラスタ オートスケーラーの新機能

2024年7月3日
Daniel Kłobuszewski

Senior Software Engineer, GKE

Roman Arcea

Product Manager, GKE

※この投稿は米国時間 2024 年 6 月 25 日に、Google Cloud blog に投稿されたものの抄訳です。

クラウド インフラストラクチャの世界では、ユーザーがまったく意識する必要のない機能が、最も効果の高い機能であったりすることがあります。Google Kubernetes EngineGKE)に関しては、Google は長年にわたって内部で静かに革新を続け、クラスタをスムーズに稼働させる目に見えない歯車を最適化してきました。これらの機能強化は必ずしも注目を集めるものではありませんが、パフォーマンスの向上、レイテンシの短縮、ユーザー エクスペリエンスの簡素化といった形で目に見えるメリットをもたらしています。

この投稿では、特にインフラストラクチャの自動スケーリングの領域での、このような「目に見えない」GKE の進歩をいくつか取り上げてスポットライトを当てます。クラスタ オートスケーラー(CA)に対して行われた最近の変更により、ユーザー側での追加の構成を必要とせずに、ワークロードのパフォーマンスを大幅に向上できるようになりました。これについて詳しく見てみましょう。

クラスタ オートスケーラーの新機能

GKE チームは、需要に応じてノードプールのサイズを自動調整するコンポーネントであるクラスタ オートスケーラーの改良に尽力してきました。主な改善点は次のとおりです。

  • ターゲット レプリカ数の追跡: この機能により、複数の Pod を同時に追加する場合(新規デプロイや大規模なサイズ変更など)のスケーリングが加速されます。また、GPU の自動スケーリングに影響を及ぼしていた以前の 30 秒の遅延も解消されます。この機能はオープンソース化されて、コミュニティ全体が Kubernetes のパフォーマンス向上の恩恵を受けられるようになる予定です。

  • 高速で均一なスケールアップ: 同一の Pod が多数ある場合、この最適化により、Pod をノードに効率的にビンパッキングすることで、スケーリング プロセスが高速化されます。

  • CPU の無駄の削減: CA の意思決定が迅速化されています。これは、異なるノードプールにわたる複数のスケールアップが必要な場合に特に顕著です。さらに、CA は制御ループを実行するタイミングをよりスマートに判断して、不要な遅延を回避します。

  • メモリの最適化: ユーザーが直接目にすることはありませんが、CA ではメモリの最適化も行われており、これによって全体的な効率性が向上しています。

ベンチマーク結果

これらの変更による実際の影響を示すために、2 つの GKE バージョン(1.27 1.29)と各種シナリオにおいて一連のベンチマークを実施しました。

インフラストラクチャ レベル:

  • Autopilot 汎用の 5,000 スケール ワークロード: Autopilot 5,000 レプリカのワークロードをデプロイし、すべての Pod が準備完了になるまでにかかる時間を測定しました。

  • ビジーなバッチクラスタ: 100 個のノードプールを作成し、複数の 20 レプリカのジョブを定期的にデプロイすることで、トラフィック量の多いバッチクラスタをシミュレートしました。その後、スケジュール設定のレイテンシを測定しました。

  • 10 レプリカの GPU テスト: 10 レプリカの GPU のデプロイを使用して、すべての Pod が準備完了になるまでの時間を測定しました。

ワークロード レベル:

  • アプリケーションのエンドユーザーのレイテンシ テスト: 負荷がかかっていないときに、定義されたレスポンスとレイテンシで API 呼び出しに予想どおりに応答する汎用のウェブ アプリケーションを使用しました。標準の負荷テスト フレームワーク(Locust)を使用して、HPA NAP の両方でスケールするように GKE に求める一般的なトラフィック パターンで、さまざまな GKE バージョンのパフォーマンスを評価しました。HPA CPU 目標値を 50% に設定して CPU にスケールしたアプリケーションを使用して、P50 P95 のエンドユーザーのレイテンシを測定しました。

結果のハイライト(説明用)

シナリオ

指標

GKE v1.27

(ベースライン)

GKE v1.29

Autopilot 汎用 5,000 レプリカのデプロイ

準備時間

7 30

3 30 秒(55% の改善)

ビジーなバッチクラスタ

P99 のスケジュール設定のレイテンシ

9 38

7 31

20% の改善)

10 レプリカの GPU

準備時間

2 40

2 09

20% の改善)

アプリケーションのエンドユーザーのレイテンシ

エンドユーザーによって測定されたアプリケーションのレスポンスのレイテンシ。P50 P95(秒単位)。

P50: 0.43

P95: 3.4

P50: 0.4

P95: 2.7

P95: 20% の改善)

(注: これらの結果は一例であり、ワークロードや構成によって異なります)

5,000 個の Pod のデプロイ時間を半分に短縮したり、95 パーセンタイルでのアプリケーションのレスポンスのレイテンシを 20% 向上させるなどの大幅な改善には、通常、集中的な最適化の取り組みやインフラストラクチャのオーバープロビジョニングが必要になります。クラスタ オートスケーラーに対する新しい変更は、複雑な構成、アイドル状態のリソース、オーバープロビジョニングを必要とせずにこのような改善を実現するという点で際立っています。

まとめ

Google Cloud は、Kubernetes エクスペリエンスを充実させるだけでなく、管理しやすく使いやすいものにするよう取り組んでいます。また、クラスタ オートスケーラーなどの基盤となるメカニズムを最適化することで、GKE 管理者がクラスタを効率的かつ確実にスケールしているという自信を持って、アプリケーションやビジネスの目標に集中できるよう支援しています。

GKE の新しいバージョンごとに、目に見える機能も目に見えない機能も含めて、数多くの新機能が追加されています。最新のリリースで最新機能を入手してください。また、最新のクラウドネイティブ アプリケーションの需要を満たすために、GKE をどのように進化させ続けているかについての詳細な分析情報にもご注目ください。

ー GKE、シニア ソフトウェア エンジニア Daniel Kłobuszewski

ー GKE、プロダクト マネージャー Roman Arcea

投稿先