Google Kubernetes Engine(GKE)を使用すると、クラスタの最適化の手引きとなるガイダンスを受け取ることができます。
GKE はクラスタをモニタリングし、最適化の余地がある場合は、 Google Cloudのリソースを使用するための分析情報と推奨事項を生成する Google Cloud サービスの Recommender によってガイダンスが提供されます。GKE の場合は、Recommender によって次の 2 種類の情報が提供されます。
- 分析情報: GKE がクラスタの使用を最適化する方法があることを確認したことを明らかにします。
- 推奨事項: クラスタの使用を最適化する方法を説明します。
この情報は、GKE によって Google Cloud コンソールに配信され、Google Cloud CLI や Recommender API でも確認できます。GKE では、以下ようなトピックに関する Recommender が用意されています。
- 非推奨: 非推奨の Kubernetes 機能や API へのアクセスを低減します。
- オペレーションと接続: コントロール プレーンとノードの接続、IP アドレスの使用率に関連する問題を修正します。
- 費用の最適化: 費用を最適化した構成と手法を導入します。たとえば、アイドル状態の GKE クラスタやオーバープロビジョニングされた GKE クラスタを特定します。
- 拡張性: プロビジョニングが十分でない GKE クラスタをスケールアップするなど、信頼性を向上させるプラクティスを実装します。
- リソース リクエストと上限: リソース リクエストと上限を設定して、ノードのリソース不足による Pod の突然の終了を回避し、費用の割り当ての精度を向上させます。
- Agones: クラスタ内で Agones コントローラを分離します。
- 中断: メンテナンス中のワークロードの継続性と復元性を確保します。
- Webhook: Webhook 使用時のコントロール プレーンの安定性を確保します。
- データ保護: ワークロードが停止イベントから保護されるようにします。
- クラスタの認証情報: クラスタの認証情報をローテーションして、停止を防ぎます。
- リリース チャンネル: クラスタをリリース チャンネルに登録します。
- メンテナンスの時間枠: GKE クラスタのメンテナンスが行われる繰り返しの時間枠を選択します。
- サポートされているバージョン: クラスタが、GKE バージョン スキュー ポリシーにも準拠しているサポート対象バージョンを実行していることを確認します。詳細については、参照先のページの「サポート終了時の自動アップグレード」と「GKE バージョンのスキュー ポリシー」のセクションをご覧ください。
- ノード サービス アカウントの権限: ノード サービス アカウントに、通常の GKE オペレーションに必要な重要な権限があることを確認します。
- CRD: 無効な CA バンドルを含む CRD の構成ミスを修正して、安定したクラスタ オペレーションを確保します。
- etcd の使用量: クラスタの不安定性を防ぐために、etcd データベースに十分なストレージがあることを確認します。
始める前に
始める前に、次の作業が完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
必要なロール
Kubernetes の分析情報と推奨事項に必要な権限が、次の基本ロールまたは事前定義ロールにあることを確認します。
次のいずれかのロールを使用して分析情報と推奨事項を表示します。
分析情報と推奨事項の状態を表示して更新します(例: 推奨事項を閉じる)。
分析情報と推奨事項を表示する
分析情報と推奨事項は、Google Cloud CLI、Google Cloud コンソール、Recommender API で確認できます。
コンソール
コンソールで推奨事項を表示する方法は 2 つあります。ビューの上部にある概要スコアカードを使用すると、プロジェクト内のすべてのクラスタの健全性、アップグレード、費用の最適化に関する推奨事項の集計結果を確認できます。
または、クラスタごとの最適化案のリストを表示することもできます。
スコアカードを使用して推奨事項を表示する手順は次のとおりです。
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
個々の推奨事項の影響を受けるクラスタの数を表示するには、表示するカテゴリ([健全性]、[アップグレード]、[費用])の下にある [推奨事項を表示] をクリックします。表示されたサイドバー パネルの推奨事項のリストには、各推奨事項の影響を受けるクラスタの数が表示されます。
影響を受けるクラスタの名前などの詳細を表示するには、推奨事項の名前をクリックします。
影響を受ける各クラスタの詳細を表示するには、推奨事項をもう一度クリックします。
クラスタごとの推奨事項を表示する手順は次のとおりです。
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
特定のクラスタの [Notifications] 列をクリックして分析情報と推奨事項を確認します。
詳細を表示するには、分析情報をクリックします。表示されたサイドバー パネルには、関連する推奨事項を含む、この分析情報の詳細が表示されます。
gcloud
通常、分析情報には対応する推奨事項があります。分析情報は gcloud recommender insights
で取得され、推奨事項は gcloud recommender recommendations
で取得されます。
特定ゾーン(ゾーンクラスタの場合)または特定リージョン(リージョン クラスタの場合)のクラスタに関する分析情報の一覧を表示します。
gcloud recommender insights list \ --insight-type=google.container.DiagnosisInsight \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT \ --filter="insightSubtype:SUBTYPE"
次のように置き換えます。
PROJECT_ID
: クラスタが配置されているプロジェクトの Google Cloud プロジェクト ID。LOCATION
: クラスタの正確なリージョンまたはゾーン。ゾーンクラスタの場合は、正確なゾーン(us-central1-c
など)を指定する必要があります。リージョン クラスタの場合は、正確なリージョン(us-central1
など)を指定する必要があります。FORMAT
: 出力形式を YAML に変更します。このフラグは省略可能です。SUBTYPE
: 分析情報のサブタイプ(例:DEPRECATION_K8S_1_23_CERTIFICATE
)。これにより、出力は指定したサブタイプの分析情報に制限されます。このフラグは省略可能です。
また、すでに分析情報 ID がある場合は、次のコマンドを実行して分析情報の詳細を確認できます。
gcloud recommender insights describe INSIGHT \ --insight-type=google.container.DiagnosisInsight \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT
INSIGHT
は、分析情報のname
フィールドの URL の末尾に指定された分析情報 ID に置き換えます。出力には、GKE がクラスタで検出した動作に関する詳細な補足情報が含まれます。
特定のゾーン(ゾーンクラスタの場合)または特定のリージョン(リージョン クラスタの場合)のクラスタに関する推奨事項の一覧を表示します。
gcloud recommender recommendations list \ --recommender=google.container.DiagnosisRecommender \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT \ --filter="recommenderSubtype:SUBTYPE"
SUBTYPE
は、Recommender のサブタイプ(DEPRECATION_K8S_1_23_CERTIFICATE
など)に置き換えます。これにより、出力は指定したサブタイプの推奨事項に制限されます。このフラグは省略可能です。また、推奨事項 ID がすでにある場合は、次のコマンドを実行して推奨事項を表示できます。
gcloud recommender recommendations describe RECOMMENDATION_ID \ --recommender=google.container.DiagnosisRecommender \ --location=LOCATION \ --project=PROJECT_ID \ --format=FORMAT
RECOMMENDATION_ID
は、ステップ 1 のコマンド出力のassociatedRecommendations.recommendation
の保存値に置き換えます。出力には、クラスタでの GKE の使用を最適化するために必要なアクションに関するガイダンスが記載されています。
API
それぞれの分析情報には、対応する推奨事項があります。分析情報は REST Resource: projects.locations.insightTypes.insights で取得され、推奨事項は REST Resource: projects.locations.recommenders.recommendations で取得されます。
特定ゾーン(ゾーンクラスタの場合)または特定リージョン(リージョン クラスタの場合)のクラスタに関する分析情報の一覧を表示します。
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.container.DiagnosisInsight/insights?filter=insightSubtype%20%3D%20SUBTYPE
次のように置き換えます。
PROJECT_ID
: クラスタが配置されているプロジェクトの Google Cloud プロジェクト ID。LOCATION
: クラスタの正確なリージョンまたはゾーン。ゾーンクラスタの場合は、正確なゾーン(us-central1-c
など)を指定する必要があります。リージョン クラスタの場合は、正確なリージョン(us-central1
など)を指定する必要があります。SUBTYPE
: 分析情報のサブタイプ(例:DEPRECATION_K8S_1_23_CERTIFICATE
)。これにより、出力は指定したサブタイプの分析情報に制限されます。このフラグは省略可能です。
また、すでに分析情報 ID がある場合は、次のリクエストを行うことで分析情報の詳細を確認できます。
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.container.DiagnosisInsight/insights/INSIGHT
INSIGHT
は、分析情報のname
フィールドの URL の末尾に指定された分析情報 ID に置き換えます。レスポンス本文には、GKE がクラスタで検出した動作の詳細が含まれています。
特定のゾーン(ゾーンクラスタの場合)または特定のリージョン(リージョン クラスタの場合)のクラスタに関する推奨事項の一覧を表示します。
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations?filter=recommenderSubtype%20%3D%20SUBTYPE
SUBTYPE
は、Recommender のサブタイプ(DEPRECATION_K8S_1_23_CERTIFICATE
など)に置き換えます。これにより、出力は指定したサブタイプの推奨事項に制限されます。このフラグは省略可能です。また、推奨事項 ID がすでにある場合は、次のリクエストを行うことで推奨事項を表示できます。
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations/RECOMMENDATION_ID
RECOMMENDATION_ID
は、ステップ 1 のレスポンス本文から取得したassociatedRecommendations.recommendation
の保存値に置き換えます。レスポンスの本文には、クラスタによる GKE の使用を最適化するために必要なアクションに関するガイダンスが記載されています。
分析情報と推奨事項を BigQuery にエクスポートする
BigQuery を使用すると、組織全体の分析情報や推奨事項をエクスポートして分析できます。詳細については、BigQuery に推奨事項をエクスポートするをご覧ください。
推奨事項を拒否する、復元する
Google Cloud コンソールにクラスタの推奨事項が表示されないようにするには、その推奨事項を拒否します。たとえば、推奨事項を評価した結果として実装しないと決めた場合などにこの操作を行います。
推奨事項を拒否すると、コンソールでクラスタを表示しているどのユーザーには表示されなくなります。推奨事項を拒否した後は、GKE が同じ動作を検出しても再度表示されることはありません。
推奨事項を拒否しても、すべてのユーザーのコンソールで非表示になるだけです。その推奨事項の Google Cloud CLI や Recommender API による検出は引き続き可能です。
推奨事項を拒否する
推奨事項を拒否する場合は、分析情報と推奨事項を表示するの手順に沿って、Google Cloud コンソールでサイドバー パネルを開いて詳細を表示します。そのパネルで、[拒否する] ボタンをクリックします。
拒否した推奨事項を復元する
拒否した推奨事項は、推奨事項を復元するの手順に沿って復元できます。
次のステップ
- Recommender の詳細を確認する