クラスタ リソースの使用方法について

このページでは、GKE 使用状況測定を使用して、Google Kubernetes Engine(GKE)クラスタの使用状況と組織内の個々のチームやビジネス ユニットとの関係を把握する方法について説明します。GKE 使用状況測定を使用しても、プロジェクトには課金されません。リソースの使用状況を細かく把握できます。

概要

GKE 使用状況測定では、クラスタのワークロードのリソース リクエストと実際のリソース使用量に関する情報がトラッキングされます。現在、測定対象となっているのは、CPU、GPU、TPU、メモリ、ストレージ、下りネットワーク(オプション)に関する情報です。Kubernetes の名前空間ラベル、またはその組み合わせを使用して、リソースの使用量を識別できます。

データは BigQuery に保存され、Google データポータルなどの外部ツールを使用して直接クエリまたはエクスポートして分析を行うことが可能です。

GKE 使用状況測定は、次のようなシナリオで役立ちます。

  • テナントごとにクラスタの名前空間が異なるマルチテナント クラスタでテナントごとのリソース リクエストと実際のリソース使用量をトラッキングする。
  • ワークロードに関連する Kubernetes オブジェクトに一意のラベルを割り当て、特定のクラスタで実行されているワークロードのリソース使用量を確認する。
  • リソース リクエストと実際のリソース使用量が大きく異なるワークロードを特定する。その結果、各ワークロードにリソースを効率的に割り当てることができます。

初期のベータ版からの変更点

GKE 使用状況測定では、初期ベータ版のリリース後に次の変更が行われています。

  • リソース リクエストに加えて、実際のリソース使用量がトラッキングされるようになりました。リソース使用量は、v1.12.8-gke.8 以降、v1.13.6-gke.7 以降、1.14.2-gke.8 以降を実行するクラスタでトラッキングされます。リソース消費量の測定結果は、BigQuery データセットの gke_cluster_resource_consumption テーブルに格納されます。以前は、リソース リクエストのみがトラッキングされていました。
  • TPU リクエスト(実際のリソース使用量ではない)がトラッキングされるようになりました。
  • カスタム マシンタイプを使用して、ノードでのリソース リクエストと実際のリソース使用量をトラッキングできるようになりました。
  • Google Cloud Console でクラスタを作成または更新する際に、GKE の使用状況測定を有効にできるようになりました。
  • BigQuery テーブルが削除されると、GKE 使用状況測定も自動的に再作成されるようになりました。履歴データは失われます。
  • BigQuery データセットが削除されても、GKE 使用状況測定は自動的には再作成されません。ユーザーは、データセットが存在することを確認する必要があります。

アップグレード

初期ベータ版の変更点に関しては、すべて下位互換性があり、データの変更や移行の必要はありません。

クラスタを、リソース使用状況測定をサポートしている GKE バージョンにアップグレードしても、自動的に有効にはなりません。--enable-resource-consumption-metering フラグを使用して明示的に有効にする必要があります。BigQuery データセットの追加のテーブルは、自動的に作成されます。どちらのテーブルも同じスキーマを使用します。

アップグレード後は、実際のリソース使用量に関する情報を追加する新しいデータポータル ダッシュボードを作成するだけです。

制限事項

サンプルの BigQuery クエリと Google データポータルのテンプレートを使用すると、BigQuery でエクスポートした Google Cloud Billing のデータと GKE 使用状況測定データを結合し、クラスタ、名前空間、ラベル別のコスト内訳を見積もることができます。GKE 使用状況測定データは、あくまでも参照目的のものであり、Google Cloud の請求に対する影響はありません。課金データに関しては、Google Cloud Billing が唯一の情報源となります。

次の制限が適用されます。

  • 特別契約割引やクレジットは考慮されません。
  • GKE の範囲外で作成されたリソースは、名前空間やラベルでトラッキングされません。
  • N2 マシンタイプは現在サポートされていません。

要件

GKE 使用状況測定を使用するには、次の前提条件を満たす必要があります。

  • 実際のリソース使用量をトラッキングするには、クラスタで GKE v1.11.10-gke.5 以上、v1.12.8-gke.8 以上、v1.13.6-gke.7 以上、1.14.2-gke.3 以上を使用する必要があります。
  • BigQuery 課金データのエクスポートを有効にする必要があります。請求が BigQuery の使用量に関連付けられます。
  • gcloud コマンドのバージョン 250.0.0 以降が必要です。gcloud --version で確認します。
  • Google Cloud プロジェクトで BigQuery API を有効にする必要があります。 2018 年 7 月以降に GKE を初めて有効にした場合、この操作はすでに完了しています。

GKE 使用状況測定を有効にする

GKE 使用状況測定を有効にするには、まず、クラスタ、プロジェクト内の複数のクラスタまたはプロジェクト全体に対して BigQuery データセットを作成する必要があります。データセットとクラスタのマッピングの選択方法については、1 つ以上の BigQuery データセットの選択をご覧ください。

次に、新しいクラスタの作成時や既存のクラスタの変更時に、GKE 使用状況測定を有効にします。

必要に応じて、Google データポータル ダッシュボードを作成して、クラスタのリソース使用量を可視化できます。

BigQuery データセットを作成する

Google Cloud プロジェクトのクラスタで GKE 使用状況測定を使用するには、BigQuery データセットを作成してから、使用するクラスタを構成します。同じプロジェクト内のクラスタであれば、複数のクラスタのリソース使用量に関する情報を、単一の BigQuery データセットを使って格納できます。

詳細については、データセットの作成をご覧ください。データセットの Default table expirationNever に設定すると、テーブルの有効期限が無期限になります。ただし、2 番目の GKE 使用状況測定のベータ版では、テーブルの有効期限が切れると、空のテーブルが自動的に再作成されます。

クラスタを対象に GKE 使用状況測定を有効にする

gcloud コマンドまたは Cloud Console を使用して、新規または既存のクラスタで GKE 使用状況測定を有効にできます。

GKE v1.12.8-gke.8 以降または v1.13.6-gke.7 以降を実行するクラスタでは、GKE 使用状況測定を有効にすると、デフォルトでリソース使用量測定も有効になります。リソース リクエストのトラッキングを継続しつつ、リソースの使用量測定だけを無効にするには、gcloud コマンドを使用して GKE 使用状況測定を有効にする方法をご覧ください。

下りネットワークの測定は、デフォルトでは無効になっています。有効にするには、オプション: 下りネットワーク測定を有効にするの注意事項と手順をご覧ください。

新しいクラスタを作成する

gcloud

クラスタを作成し、GKE 使用状況測定を有効にするには、次のコマンドを実行します。

サンプルをペーストする前に独自の値を挿入したい場合は、highlighted のフィールドをクリックして、値を編集します。値をリセットするには、このページを更新します。

gcloud container clusters create [CLUSTER-NAME] \
  --resource-usage-bigquery-dataset [RESOURCE-USAGE-DATASET]

GKE v1.12.8-gke.8 以降、または v1.13.6-gke.7 以降を実行するクラスタでは、リソース使用量測定がデフォルトで有効になります。リソース使用量測定を無効にして、リソース リクエストのみをトラッキングするには、上記のコマンドに --no-enable-resource-consumption-metering フラグを追加します。なお、このトピックの残りのサンプルクエリについても、リソース使用量のクエリを実行しないように変更する必要があります。

BigQuery データセット内に必要なテーブルがある場合は、クラスタの起動時に作成されます。

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [クラスタを作成] をクリックします。

  3. [標準クラスタ] テンプレートを選択するか、ワークロードに適切なテンプレートを選択します。

  4. [可用性、ネットワーキング、セキュリティ、その他の機能] をクリックします。

  5. [GKE 使用状況測定を有効にする] を選択します。

  6. BigQuery データセットの名前を入力します。

  7. 必要に応じて、オプション: 下りネットワーク測定を有効にするの注意事項と手順を確認して、[下りネットワーク測定を有効にする] を有効にします。

  8. クラスタの構成を続行して、[保存] をクリックします。

既存クラスタの構成

gcloud

既存のクラスタで GKE 使用状況測定を有効にするには、次のコマンドを実行します。

サンプルをペーストする前に独自の値を挿入したい場合は、highlighted のフィールドをクリックして、値を編集します。値をリセットするには、このページを更新します。

gcloud container clusters update [CLUSTER-NAME] \
  --resource-usage-bigquery-dataset [RESOURCE-USAGE-DATASET]"

GKE v1.12.8-gke.8 以降、または v1.13.6-gke.7 以降を実行するクラスタでは、リソース使用量測定がデフォルトで有効になります。リソース使用量測定を無効にして、リソース リクエストのみをトラッキングするには、上記のコマンドに --no-enable-resource-consumption-metering フラグを追加します。なお、このトピックの残りのサンプルクエリについても、リソース使用量のクエリを実行しないように変更する必要があります。

--resource-usage-bigquery-dataset フラグの値を変更して、既存のクラスタが使用状況測定データの保存に使用するデータセットを変更することもできます。

クラスタが更新されると、必要に応じて BigQuery データセット内にテーブルが作成されます。

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 変更するクラスタの [編集] ボタン(鉛筆の形をしたアイコン)をクリックします。

  3. GKE 使用状況測定を有効にします。

  4. BigQuery データセットの名前を入力します。

  5. 必要に応じて、オプション: 下りネットワーク測定を有効にするの注意事項と手順を確認して、[下りネットワーク測定を有効にする] を有効にします。

  6. クラスタの構成を続行して、[保存] をクリックします。

オプション: 下りネットワーク測定を有効にする

デフォルトでは、下りネットワークのデータは収集またはエクスポートされません。下りネットワークを測定するには、各ノードでネットワーク測定エージェント(NMA)を実行する必要があります。NMA は特権ポッドとして実行されます。ノード上でリソース(CPU、メモリ、ディスク容量)を使用し、カーネルで nf_conntrack_acct sysctl フラグを有効にします(接続トラッキング フローのアカウンティング用)。

これらの注意事項をよく理解している場合は、GKE の使用状況測定で使用するように下りネットワークの追跡を有効にできます。下りネットワークのトラッキングを有効にするには、クラスタの作成時または更新時に --enable-network-egress-metering オプションを指定するか、Google Cloud Console で GKE 使用状況測定を有効にする際に、[下りネットワーク測定を有効にする] を選択します。

GKE 使用状況測定が有効かどうか確認する

GKE 使用状況測定がクラスタで有効になっているかどうか、どの BigQuery データセットにクラスタのリソース使用量データが格納されているかを確認するには、gcloud container clusters describe コマンドを使用します。

サンプルをペーストする前に独自の値を挿入したい場合は、highlighted のフィールドをクリックして、値を編集します。値をリセットするには、このページを更新します。

gcloud container clusters describe [CLUSTER-NAME]\
  --format="value(resourceUsageExportConfig)"

GKE 使用状況測定が有効でない場合は、出力が空になります。有効な場合は、クラスタで使用される BigQuery データセットが次のように出力されます。

bigqueryDestination={u'datasetId': u'test_usage_metering_dataset'}

GKE 使用状況測定を無効にする

gcloud

クラスタで GKE 使用状況測定を無効にするには、次のコマンドを実行します。

サンプルをペーストする前に独自の値を挿入したい場合は、highlighted のフィールドをクリックして、値を編集します。値をリセットするには、このページを更新します。

gcloud container clusters update [CLUSTER-NAME] \
  --clear-resource-usage-bigquery-dataset

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 変更するクラスタの [編集] ボタン(鉛筆の形をしたアイコン)をクリックします。

  3. GKE 使用状況測定を無効にします。

  4. [保存] をクリックします。

1 つ以上の BigQuery データセットを選択する

データセットでは、プロジェクト内に複数のクラスタの GKE 使用状況測定データを保持できます。使用するデータセットの数はセキュリティ要件によって異なります。

  • プロジェクト全体で 1 つのデータセットを使用すると、管理が容易になります。
  • クラスタごとにデータセットを使用すると、データセットに対するアクセス権をきめ細かく委任できます。
  • クラスタの関連グループごとにデータセットを使用すると、必要に応じてシンプルさときめ細かさを適切に組み合わせることができます。

データポータル ダッシュボードを使用した GKE 使用状況測定データの可視化

GKE 使用状況測定データは、データポータル ダッシュボードを使用して可視化できます。クラスタ名、名前空間、ラベルでデータをフィルタリングしたり、レポート期間を動的に調整したりできます。データポータルと BigQuery の操作に習熟している場合は、ダッシュボードを完全にカスタマイズできます。また、GKE 使用状況測定専用のダッシュボードのクローンも作成できます。

ダッシュボードを使用すると、クラスタに対するリソース リクエストと使用量を可視化できます。

要件

  1. まだ有効になっていない場合、Google Cloud Billing のデータを BigQuery にエクスポートできるようにします。このプロセスでデータセットを作成しますが、データセット内にテーブルが表示され、更新されるまでに最大 5 時間かかります。テーブルが表示されると、gcp_billing_export_v1_[BILLING_ACCOUNT_ID] のような名前になります。
  2. プロジェクト内の少なくとも 1 つのクラスタで GKE 使用状況測定を有効にします。BigQuery データセットに選択した名前をメモしておきます。
  3. データポータルが有効になっていない場合は有効にします。
  4. 次の情報を収集します。ダッシュボードの構成時に必要になります。

    • Cloud Billing エクスポート データセット ID とデータテーブル
    • GKE 使用状況測定データセット ID

データポータルのダッシュボードを作成する

データソースとダッシュボードの作成プロセスが合理化されました。 前提条件を満たしたら、カスタマイズしたデータポータル コネクタを使用して、データソースとダッシュボードを自動的に作成します。

  1. GKE 使用状況測定のデータポータル コネクタにアクセスします。

    データポータル コネクタ ギャラリーGKE 使用状況測定を検索して探すこともできます。

  2. プロンプトの内容を確認して同意し、コネクタに必要な権限を付与します。

  3. プロンプトが表示されたら、プロジェクト ID、Cloud Billing エクスポート データセット ID とテーブル、GKE 使用状況測定データセット ID を指定します。

  4. クラスタでリソース使用量測定が有効になっている場合は、リソース使用量測定を有効にします。 ユーザーの大半が該当します。

  5. [接続] をクリックします。新しいデータソースが、デフォルト名の「GKE Usage Metering」で作成されます。ページの見出しにある名前をクリックすると、任意の名前に変更できます。

  6. [レポートを作成する] をクリックして、データポータル ダッシュボードを作成します。

ダッシュボードが作成され、ダッシュボード エディタが開きます。ダッシュボードを表示させて使用するには、[表示] をクリックします。

ダッシュボードには、プロジェクトのデータポータル レポートのリストからいつでもアクセスできます。

データポータルのダッシュボードを使用する

ダッシュボードには複数のレポートが含まれています。

使用状況の内訳
同じ BigQuery のデータソースに使用状況測定データを送信するすべてのクラスタに関して、全体的なクラスタ使用率が表示されます。また、リソースタイプ(CPU、メモリ、下りネットワークなど)に関する詳細情報が名前空間ごとに表示されます。 レポートデータを 1 つ以上のクラスタまたは名前空間に制限できます。
未割り当てリソースの使用状況の内訳
このレポートは上のレポートと似ていますが、未割り当てリソースがすべての名前空間に均等に配分されています。未割り当てリソースには、アイドル リソースや、その時点で GKE 使用状況測定によって特定のテナントに割り当てられていないリソースが含まれます。
費用の傾向 - 名前空間別の詳細
同じ BigQuery のデータソースに使用状況測定データを送信するすべてのクラスタに関して、名前空間別の使用量の傾向が表示されます。1 つまたは複数のクラスタ、名前空間、リソース、SKU を選択できます。
費用の傾向 - ラベル別の詳細
同じ BigQuery のデータソースに使用状況測定データを送信するすべてのクラスタに関して、費用の傾向が表示されます。1 つまたは複数のクラス、リソース、ラベル名、ラベル値を選択できます。
使用量をベースとした測定
同じ BigQuery のデータソースに使用状況測定データを送信するすべてのクラスタに関して、使用量の傾向が表示されます。1 つまたは複数の名前空間、ラベルキー、ラベル値を選択できます。このレポートは、少なくとも 1 つのクラスタでリソース使用量測定が有効になっている場合にのみ生成されます。

画面左上の矢印でページを変更できます。ページに表示する期間を日付ピッカーで変更できます。組織のメンバーとレポートを共有したり、アクセスを取り消したりするには、Share Report リンクをクリックします。人の絵に + 記号が付いたアイコンをクリックしてください。

このアニメーションは、ダッシュボードの各画面を示しています。

レポートをプロジェクトにコピーした後、データポータルのレポート エディタでレポートをカスタマイズできます。Google が提供するレポート テンプレートが変更されても、コピーに影響はありません。

BigQuery を使用した GKE 使用状況測定データの探索

BigQuery を使用するリソース リクエストに関するデータを表示するには、関連する BigQuery データセット内の gke_cluster_resource_usage テーブルに対してクエリを実行します。

実際のリソースの使用量に関するデータを表示するには、gke_cluster_resource_consumption テーブルに対してクエリを実行します。下りネットワークの使用量のデータについては、リソース リクエストに下りの概念がないことから、gke_cluster_resource_usage に保持されます。

BigQuery でのクエリの使用の詳細については、クエリの実行をご覧ください。スキーマのフィールドは固定ですが、今後さらに多くのフィールドが追加される可能性があります。

これらのクエリは簡単な例です。クエリをカスタマイズして必要なデータを見つけてください。

リソース リクエストに対するクエリ

サンプルをペーストする前に独自の値を挿入したい場合は、highlighted のフィールドをクリックして、値を編集します。値をリセットするには、このページを更新します。

SELECT
  cluster_name,
  labels,
  usage
FROM
  `[CLUSTER_GCP_PROJECT].[USAGE_METERING_DATASET].gke_cluster_resource_usage`
WHERE
  namespace="[NAMESPACE]"

リソース使用量に対するクエリ

SELECT
  cluster_name,
  labels,
  usage
FROM
  `[CLUSTER_GCP_PROJECT].[USAGE_METERING_DATASET].gke_cluster_resource_consumption`
WHERE
  namespace="[NAMESPACE]"

その他の例

より高度な例を見るには、以下のセクションを展開してください。

BigQuery における GKE 使用量測定のスキーマ

次の表では、BigQuery データセットにおける GKE 使用状況測定テーブルのスキーマについて説明しています。リソース使用量測定とリソース リクエストをサポートする GKE バージョンをクラスタで実行している場合には、同じスキーマを持つテーブルが追加で作成されます。

項目 説明
cluster_location STRING GKE クラスタが存在する Compute Engine のゾーンまたはリージョンの名前。
cluster_name STRING GKE クラスタの名前。
namespace STRING 使用状況データの生成元の Kubernetes 名前空間。
resource_name STRING "cpu"、"memory"、"storage" などのリソース名。
sku_id STRING 基盤となる Google Cloud クラウドリソースの SKU ID。
start_time TIMESTAMP 使用開始時刻の UNIX タイムスタンプ。
end_time TIMESTAMP 使用終了時刻の UNIX タイムスタンプ。
fraction FLOAT クラウド リソースの使用量の割合(使用状況別)。1 つの名前空間が専用のクラウド リソースを使用する場合、その割合は常に 1.0 になります。複数の名前空間で共有されるリソースの場合は、リクエストされた量を基になるクラウド リソースの合計量で割って計算されます。
cloud_resource_size INTEGER 基盤となる Google Cloud リソースのサイズ。たとえば、n1-standard-2 インスタンスの vCPU のサイズは 2 になります。
labels.key STRING 使用状況に関連する Kubernetes ラベルのキー。
labels.value STRING 使用状況に関連する Kubernetes ラベルの値。
project.id STRING GKE クラスタが存在するプロジェクトの ID。
usage.amount FLOAT 使用された usage.unit の量。
usage.unit STRING リソースの使用状況を測定する基本単位。たとえば、標準ストレージの基本単位はバイト秒です。

次のステップ