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

このページでは、Google Kubernetes Engine の使用状況測定を使用して、GKE クラスタの使用状況を把握し、組織内の個々のチームや事業部門との関係を把握する方法について説明します。使用状況の測定はプロジェクトの課金に影響を与えません。リソースの使用状況をきめ細かく把握できます。

概要

デフォルトでは、Google Cloud Platform プロジェクトのレベルで GKE クラスタ リソースの使用状況に関する情報を確認できます。使用状況測定では、CPU、GPU、メモリ、下りネットワーク、ストレージなどの個々のクラスタ リソースの使用状況が追跡されます。Kubernetes の名前空間ラベル、またはその組み合わせを使用して、リソースの使用状況を識別できます。データは BigQuery に保存されます。このデータは、Google データポータルなどの外部ツールを使用して解析用にエクスポートできます。

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

  • テナントごとにクラスタの名前空間が異なるマルチテナント クラスタでテナントごとの使用状況を追跡する。
  • アプリケーションに属する Kubernetes オブジェクトに一意のラベルを割り当て、特定のクラスタで実行されているアプリケーションの使用状況を確認する。

制限事項

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

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

  • 特別契約割引やクレジットは考慮されません。
  • GKE の範囲外で作成されたリソースは、名前空間やラベルで追跡されません。
  • 追跡されるのは、CPU、GPU、メモリ、ストレージ、下りネットワークです。
  • 現在、カスタムマシン タイプを使用しているノードで使用状況測定を使用できません。

前提条件

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

  • GKE v1.10.9-gke.5 以降または v1.11.4-gke.8 以降。
  • バージョン 227.0.0 以降の gcloud コマンド。確認するには gcloud --version を使用してください。
  • Google Cloud Platform プロジェクトで BigQuery API を有効にする必要があります。2018 年 7 月以降に GKE を初めて有効にした場合、この操作はすでに完了しています。
  • BigQuery 課金データのエクスポートを有効にする必要があります。

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

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

次に、使用状況測定を使用するクラスタを作成または変更します。

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

Google Cloud Platform プロジェクトのクラスタで使用状況測定を使用するには、BigQuery データセットを作成して、それを使用するようにクラスタを構成します。1 つの BigQuery データセットを使用して、同じプロジェクト内の複数のクラスタに関する使用状況測定情報を格納できます。

詳細については、データセットの作成をご覧ください。

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

新しいクラスタまたは既存のクラスタで使用状況測定を有効にするには、gcloud コマンドで --resource-usage-bigquery-dataset BIGQUERY_DATASET フラグを使用します。現在、Google Cloud Platform Console では使用状況測定を有効にできません。

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

gcloud

クラスタを作成して使用状況測定を有効にするには、次のコマンドを実行します。test-cluster はクラスタ名で置き換え、test_usage_metering_dataset は BigQuery データセット名で置き換えます。

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

gcloud beta container clusters create test-cluster \
  --resource-usage-bigquery-dataset test_usage_metering_dataset

クラスタの起動時に、必要に応じて BigQuery データセット内にテーブルが作成されます。

既存のクラスタを変更する:

gcloud

既存のクラスタで使用状況測定を有効にするには、次のコマンドを実行します。test-cluster はクラスタ名で置き換え、test_usage_metering_dataset は BigQuery データセットの名前で置き換えます。

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

gcloud beta container clusters update test-cluster \
  --resource-usage-bigquery-dataset test_usage_metering_dataset

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

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

gcloud

クラスタで使用状況測定を無効にするには、次のコマンドを実行します。test-cluster はクラスタ名で置き換えます。

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

gcloud beta container clusters update test_cluster \
  --clear-resource-usage-bigquery-dataset

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

クラスタで使用状況測定の状態、およびクラスタの使用状況測定データが保存される BigQuery データセットを確認するには、gcloud beta container clusters describe コマンドを使用します。次の例で、test-cluster はクラスタ名で置き換えます。

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

gcloud beta container clusters describe test-cluster \
  --format="value(resourceUsageExportConfig)"

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

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

BigQuery で使用状況測定データを使用する

次の表に、BigQuery にエクスポートされる使用状況測定データの内容を示します。

フィールド 説明
cluster_location STRING GKE クラスタが存在する Compute Engine のゾーンまたはリージョンの名前。
cluster_name STRING GKE クラスタの名前。
namespace STRING 使用状況データの生成元の Kubernetes 名前空間。
resource_name STRING "cpu"、"memory"、"storage" などのリソース名。
sku_id STRING 基礎となる GCP クラウド リソースの SKU ID。
start_time TIMESTAMP 使用開始時刻の UNIX タイムスタンプ。
end_time TIMESTAMP 使用終了時刻の UNIX タイムスタンプ。
fraction FLOAT クラウド リソースの使用量の割合(使用状況別)。1 つの名前空間が専用のクラウド リソースを使用する場合、その割合は常に 1.0 になります。複数の名前空間で共有されるリソースの場合は、リクエストされた量を基になるクラウド リソースの合計量で割って計算されます。
cloud_resource_size INTEGER 基礎となる GCP リソースのサイズ。たとえば、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 リソースの使用状況を測定する基本単位。たとえば、標準ストレージの基本単位はバイト秒です。

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

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

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

BigQuery を使用して使用状況測定データを表示する

BigQuery を使用して使用状況測定データを表示するには、関連する BigQuery データセット内の gke_cluster_resource_usage テーブルにクエリを送信します。Cloud Bigtable でクエリを使用する方法については、クエリの実行をご覧ください。スキーマのフィールドは固定ですが、今後さらに多くのフィールドが追加される可能性があります。

このクエリは一例にすぎません。クエリをカスタマイズして必要なデータを見つけてください。

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

SELECT
  cluster_name,
  labels,
  fraction
FROM
  `PROJECT-ID.USAGE_METERING.gke_cluster_resource_usage`
WHERE
  namespace="accounting"

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

データポータルのダッシュボードに使用状況測定データを表示する

データポータルのダッシュボードに使用状況測定データを表示できます。クラスタ名、名前空間、ラベルなどでデータをフィルタリングしたり、レポート期間を動的に調整したりできます。データポータルと BigQuery に慣れていれば、ダッシュボードをカスタマイズできます。また、使用状況計測用に作成したダッシュボードのクローンを作成することもできます。

前提条件を満たしたら、BigQuery で使用状況測定データと Cloud Billing データをクエリするときに使用するデータポータルのデータソースを作成します。次に、データポータルのダッシュボードをプロジェクトにコピーし、3 つのデータソースを使用するように構成します。最後に、ダッシュボードを使用して、クラスタの使用状況を把握します。

前提条件

  1. まだ有効になっていない場合、Google Cloud Platform の課金データを BigQuery にエクスポートできるようにします。このプロセスでデータセットを作成しますが、データセット内にテーブルが表示され、更新されるまでに最大 5 時間かかります。テーブルが表示されたら、その名前をメモします。gcp_billing_export_v1_<var>BILLING_ACCOUNT_ID</var> のような名前が付いています。
  2. データポータルが有効になっていない場合は有効にします。
  3. 次の情報を収集し、ダッシュボードを更新するクエリを変更します。

    • 最初の前提条件の Cloud Billing エクスポート データセットとテーブル名
    • BigQuery データベースを作成するで作成した使用状況測定データセットとテーブル名
    • GCP プロジェクト ID

BigQuery データソースを作成する

これらのクエリは複雑ですが、前提条件で収集した値をプレースホルダの値と置き換えるだけですみます。クエリで次のように置き換えます。

  • PROJECT_ID はプロジェクト ID で置き換えます(プロジェクト名ではありません)。
  • USAGE_METERING_DATASET は、クラスタが使用状況測定データを書き込むデータセットで置き換えます。
  • BILLING_DATASETBILLING_TABLE は、Cloud Billing データをエクスポートするデータセットとテーブルで置き換えます。

以下のクエリで、データポータルのデータソースを作成します。

  1. データソースを開きます。
  2. 画面右下にある + アイコンをクリックして、データソースを追加します。
  3. [BigQuery] を選択します。
  4. [Custom Query] を選択して、プロジェクト ID を選択します。
  5. データソースに名前を付けます。画面上部にある「Untitled Data Source」をクリックし、テキストをわかりやすいクエリ名で置き換えます。クエリの見出しがデータソースの名前になります。
  6. クエリ内のすべてのプレースホルダを置き換えたら、クエリを Query Editor に貼り付けます。[Use Legacy SQL] は選択しないでください。
  7. 画面右上隅にある [Connect] をクリックします。

BreakdownQuery クエリ

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

SELECT
  resource_usage.cluster_name,
  resource_usage.cluster_location,
  resource_usage.namespace,
  resource_usage.labels,
  resource_usage.resource_name,
  resource_usage.sku_id,
  resource_usage.start_time AS usage_start_time,
  resource_usage.end_time AS usage_end_time,
  resource_usage.usage.amount * gcp_billing_export.rate AS cost
FROM
  `PROJECT_ID.USAGE_METERING_DATASET.gke_cluster_resource_usage` AS resource_usage
LEFT JOIN (
  SELECT
    sku.id AS sku_id,
    SUM(cost) / SUM(usage.amount) AS rate,
    MIN(usage_start_time) AS min_usage_start_time,
    MAX(usage_end_time) AS max_usage_end_time
  FROM
    `PROJECT_ID.BILLING_DATASET.BILLING_TABLE`
  WHERE
    project.id = "PROJECT_ID"
  GROUP BY
    sku_id) AS gcp_billing_export
ON
  resource_usage.sku_id = gcp_billing_export.sku_id
WHERE
  resource_usage.start_time >= gcp_billing_export.min_usage_start_time
  AND resource_usage.end_time <= gcp_billing_export.max_usage_end_time

GKEProjectCostFromGCP クエリ

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

SELECT
*
FROM
  `PROJECT_ID.BILLING_DATASET.BILLING_TABLE`
WHERE
  project.id = "PROJECT_ID"

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

プロジェクトにコピーできるダッシュボードが作成されました。ダッシュボードをコピーするときに、いま作成した 3 つのデータソースを選択するように求められます。

  1. このダッシュボードのリンクをクリックします。
  2. 画面右上隅にあるコピーボタン このレポートのコピーを作成するアイコン をクリックします。
  3. 先ほど作成したデータソースを選択します。最初のフィールドで BreakdownQuery を使用し、2 番目のフィールドに GKEProjectCostFromGCP を使用します。
  4. [Create Report] をクリックします。

使用状況測定のダッシュボードのデモで、これらの手順がアニメーションで表示されます。

ダッシュボードが作成され、プロジェクトのデータポータル レポートのリストにいつでもアクセスできるようになります。

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

使用状況測定のダッシュボードのデモでは、ダッシュボードの画面もアニメーションで表示されます。

ダッシュボードは 3 つのページから構成されます。

  • 月ごとのデータ。プロジェクト内で使用状況測定が有効な全てのクラスタに関して、全体的なクラスタ使用率が表示されます。また、リソースタイプ(CPU やメモリなど)に関する詳細情報が名前空間ごとに表示されます。レポートデータを 1 つ以上のクラスタまたは名前空間に制限できます。

    使用状況測定の月別表示の例

  • 名前空間別のコストの傾向。使用状況測定を使用してクラスタ全体の使用傾向が名前空間別に表示されます。1 つまたは複数のクラスタ、名前空間、リソース、SKU を選択できます。

    名前空間別のコストの傾向の例

  • ラベル別のコストの傾向。使用状況測定を使用してクラスタ全体の使用傾向がラベル別に表示されます。1 つまたは複数のクラスタ、名前空間、リソース、SKU を選択できます。

    ラベル別のコストの傾向の例

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

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

使用状況測定ダッシュボードのデモ

次のアニメーションでは、ダッシュボードの作成方法使用方法を説明します。アニメーションが自動的に再生されない場合は、アニメーションの任意の場所をクリックして開始してください。

使用状況測定ダッシュボードのデモ。テキストの説明も表示されます。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント