Gemini アシスタンスで GKE サービスを微調整する


このページでは、 Google Cloudの AI を活用したコラボレーターである Gemini Cloud Assist を使用して、パフォーマンスと信頼性を最適化するように Google Kubernetes Engine(GKE)のデプロイを微調整する方法について説明します。Gemini のサポートには、推奨事項、コード生成、トラブルシューティングなどがあります。

Gemini Cloud Assist には多くのメリットがありますが、その中でも次のことを実現できます。

  • 費用を削減する: アイドル状態のリソースの特定、デプロイのサイズ調整を行い、自動スケーリング構成を最適化して、不要な費用を最小限に抑えます。
  • 信頼性と安定性の向上: バージョンのスキューや Pod Disruption Budget の欠落などの潜在的な問題を事前に特定し、ダウンタイムを防ぎ、アプリケーションの復元力を確保します。
  • AI / ML ワークロードを最適化する: GKE での AI / ML ワークロードのデプロイ、管理、最適化をサポートします。
  • トラブルシューティングを簡素化: ログを迅速に分析してエラーの根本原因を特定し、時間と労力を節約します。

このページは、既存の GKE ユーザーと、クラウド リソースのプロビジョニングと構成、アプリとサービスのデプロイを行うオペレーターとデベロッパーを対象としています。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。

費用

  • Gemini: プレビュー版の間は、Gemini Cloud Assist の使用料は発生しません。

  • GKE: GKE で Gemini Cloud Assist を使用しても追加料金は発生しません。

始める前に

GKE で Gemini の使用を開始するには、次の前提条件を満たしている必要があります。

このガイドでは、GKE クラスタがあり、できればいくつかのデプロイが実行されていることを前提としています。

Gemini Cloud Assist に質問する

Gemini Cloud Assist は Google Cloud コンソールから呼び出すことができます。Gemini Cloud Assist を使用すると、自然言語プロンプトを使用して、タスクを迅速かつ効率的に完了できます。

GKE ページから Cloud Assist を開く手順は次のとおりです。

  1. Google Cloud コンソールのプロジェクト セレクタページで、Gemini Cloud Assist を有効にしたGoogle Cloud プロジェクトを選択します。

    プロジェクト セレクタに移動

  2. Google Cloud コンソールで、[Kubernetes Engine] コンソールの特定のページに移動します。

    たとえば、[Kubernetes Engine の概要] ページに移動します。

    Kubernetes Engine の概要に移動

    特定のリソースについて質問がある場合は、まず関連するページに移動します。たとえば、[クラスタ] ページでは、Gemini Cloud Assist がクラスタの管理、クラスタの健全性のモニタリング、クラスタの問題のトラブルシューティングについてアドバイスします。特定の Google Cloud コンソール ページで Gemini を使用すると、質問のコンテキストを把握しやすくなります。Gemini は、このコンテキストと、ユーザーが現在作業しているプロジェクト全体を組み合わせて、よりカスタマイズされた正確な支援を提供できます。

  3. Gemini Cloud Assist ペインを開くには、ツールバーの spark [Gemini AI チャットを開く、または閉じる] をクリックします。

  4. プロンプトが表示されたら、利用規約に同意する場合は [同意する] をクリックします。

  5. [Gemini] ペインにプロンプトを入力します。次のセクションでは、Gemini を使用してトラブルシューティングを行うワークフローの例をご覧ください。

Google Cloud コンソールで Gemini を使用する方法については、Gemini Cloud Assist を使用するをご覧ください。

Gemini を使用したトラブルシューティングの例

Gemini は、GKE サービスのトラブルシューティングをサポートしています。

  1. Google Cloud コンソールの [ワークロード] ページに移動します。

    [ワークロード] に移動

  2. トラブルシューティングするワークロードを選択します。

  3. [Logs] タブをクリックします。

  4. ツールバーの [Gemini AI チャットを開く / 閉じる] スパークル アイコンをクリックします。

  5. 発生している問題について説明するプロンプトを入力します。たとえば、「accounts-db データベース アプリケーションでレイテンシが高くなっています」などです。Gemini は、データベースのタイプや、レイテンシの影響を受けるオペレーションやユーザーなどの影響範囲など、より多くのコンテキストを求めることがあります。

  6. Gemini は、ログを自分で分析するためのガイダンスと、トラブルシューティングの提案を提供します。

  7. 推奨事項を確認し、それに沿って問題を解決します。

Gemini Cloud Assist のプロンプトの例

このセクションでは、実際のユースケースをいくつか紹介し、Gemini に試してみることをおすすめするプロンプトを提案します。実際に受け取るレスポンスは、一般的なものになることもあれば、Google Cloud 環境の固有の状態に基づいてパーソナライズされ、実行可能なものになることもあります。回答には、Cloud リソースの確認と管理を行うための Google Cloud コンソール リンクや、詳細情報を確認するための関連ドキュメントへのリンクが含まれる場合があります。

費用を削減する

次の表に、コスト削減に役立つプロンプトを示します。

プロンプト 回答の種類
「パフォーマンスを犠牲にすることなく、GKE クラスタの費用を節約するにはどうすればよいですか?」
  • アイドル状態のクラスタなど、使用率の低いリソースを特定して削除を提案する推奨事項。
  • 自動スケーリング メカニズムの有効化または調整に関するアドバイス。
  • 構成レビュー(ロギング保持ポリシーなど)を通じて、潜在的な節約額をハイライト表示する提案。
my-docker-cluster GKE クラスタのアップグレードを検討しています。何かおすすめはありますか?」 特定の Kubernetes 構成とベスト プラクティスを実装するための提案。例:
  • Pod のリソース リクエストと上限を定義して、予測可能なリソース割り当てを確保する。
  • 専用の Namespace を使用してワークロードを分離する。
  • Pod Disruption Budget を実装して、ノードのメンテナンスやアップグレードなどの自発的な中断中に、最小数の Pod レプリカが使用可能であることを確認する。
  • メンテナンスの時間枠をスケジュールして、計画的な中断を管理し、予期しないダウンタイムを最小限に抑える。
  • リリース チャンネルにクラスタを登録して、GKE バージョンのアップグレードを管理する。
「数週間後に my-docker-cluster クラスタでトラフィックが急増する予定です。何かおすすめはありますか?」
  • HorizontalPodAutoscaler を使用してアプリケーション Pod の数をスケーリングする戦略。
  • VerticalPodAutoscaler を使用して Pod あたりのリソース(CPU、メモリ)を増やす戦略。
「HPA が有効になっていない GKE ワークロードはどれですか?」 HorizontalPodAutoscaler が有効になっていないワークロードのリスト。

信頼性と安定性の向上

次の表に、GKE ワークロードの信頼性と安定性の向上に役立つプロンプトを示します。

プロンプト 回答の種類
「GKE クラスタの信頼性を高め、ダウンタイムを回避するにはどうすればよいですか?」
  • クラスタのバージョン スキューを特定し、Kubernetes バージョンの互換性を維持するためのアクションを提案する。
  • リソース分離を実装するための推奨事項を提供する。
  • 計画メンテナンスやアップグレード中に実行中の Pod レプリカの最小数を維持するように Pod 停止予算を構成するための推奨事項を提供する。
my-clusterDefault 名前空間からワークロードを移動する方法を教えてください。」 次を行う手順を示します。
  • ターゲット クラスタを準備する。
  • アプリとデータをターゲット クラスタに移行する。
  • ダウンタイムを最小限に抑えてサービスを切り替える。
「実行中の Pod の高可用性を確保するにはどうすればよいですか?」
  • podAntiAffinity と冗長性のための複数のレプリカを使用する Deployment を指定する詳細な手順。
  • リソース リクエストと上限の設定、水平 Pod 自動スケーリングの使用に関する提案。

AI / ML ワークロード向けに GKE を最適化する

次の表に、GKE での AI / ML ワークロードのデプロイ、管理、最適化に関するヘルプを取得するために使用できるプロンプトを示します。

プロンプト 回答の種類
「GPU を使用して GKE で大規模な分散 TensorFlow トレーニングを実行する場合、推奨されるノードプール構成は何ですか?」 GKE での分散 TensorFlow ML トレーニングを最適化するための推奨事項には、次のものがあります。
  • 適切な GPU とマシンタイプを選択する。
  • 自動スケーリングを有効にする。
  • ネットワーク接続を最適化する。
  • 分散トレーニング フレームワークを活用する。
  • 費用削減策の実施。
「GKE でトレーニングに GPU を使用するにはどうすればよいですか?」 GPU を使用するようにクラスタとワークロードを構成する手順と考慮事項の概要。
「GKE にモデル提供コンテナをデプロイする例を教えてください。」 GKE にモデル提供コンテナをデプロイするサンプルコードの例。この例にはベスト プラクティスが組み込まれており、スケーラビリティを確保するのに役立ちます。
「推論用のロード バランシング設定の有効性を評価するには、どの指標を追跡すればよいですか?」 ロード バランシング設定のパフォーマンスと健全性に関する分析情報を取得するための指標(トラフィック分布、レイテンシ、エラー率、CPU、メモリ使用率など)のリスト。

トラブルシューティングを簡素化する

次の表に、ログを迅速に分析してエラーの根本原因を特定し、時間と労力を節約するために使用できるプロンプトを示します。

プロンプト 回答の種類
「このエラーは何ですか?
Readiness probe failed: Get "https://10…./abcd": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
kubelet が定義されたタイムアウト期間内にコンテナの readiness プローブを実行できなかったことを説明し、考えられる原因とトラブルシューティングのアクションを提案する。
「デプロイ nettools がエラー ping: socket: Operation not permitted でクラッシュするのはなぜですか?」 ping コマンドには CAP_NET_RAW セキュリティ コンテキスト機能が必要であり、デフォルトでは、Kubernetes のコンテナはセキュリティ上の理由から制限された機能セットで実行されることを説明する。
「エラー Cannot schedule pods: No preemption victims found for incoming pod. により Pod をスケジュールできないのはどうしてですか?」 Kubernetes での Pod のスケジューリングとプリエンプションの仕組みについて説明する。プリエンプションの対象が見つからなかった理由をトラブルシューティングする手順を一覧表示する。

次のステップ