このページでは、Google Kubernetes Engine(GKE)の垂直 Pod オートスケーラーによって出力される決定イベントについて説明します。これらのイベントを分析することで、垂直 Pod オートスケーラー コントローラがワークロードのスケーリングを管理する方法に関する分析情報を取得し、アクションの背後にある意思決定プロセスを把握できます。
垂直 Pod 自動スケーリングにより、決定イベントが出力されます。このイベントは、Cloud Logging のログエントリとして保存されます。
始める前に
次の前提条件を満たしていることを確認してください。
プロジェクトの選択または作成
既存のプロジェクトを使用することも、このチュートリアル用の新しいプロジェクトを作成することもできます。
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
API を有効にする
GKE API と Cloud Logging API を有効にします。
API を有効にするために必要なロール
API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。
Cloud Shell を設定する
このチュートリアルでは、Cloud Shell を使用して gcloud コマンドと kubectl コマンドを実行します。Cloud Shell は、 Cloud de Confiance by S3NSでホストされているリソースを管理するためのシェル環境です。Google Cloud CLI と kubectl コマンドライン ツールがプリインストールされています。
Cloud de Confiance コンソールで Cloud Shell をアクティブにします。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。
このチュートリアルでコマンドを実行する前に、デフォルト プロジェクトがサンプルアプリをデプロイするプロジェクト ID に設定されていることを確認します。まだ設定していない場合は、Cloud Shell で次のコマンドを実行します。
gcloud config set project PROJECT_ID
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
必要なロールと権限
ログの生成を有効にする権限、ログにアクセスして処理する権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
クラスタで垂直 Pod 自動スケーリングのイベントのロギングを有効にする: Kubernetes Engine クラスタ管理者 (
roles/container.clusterAdmin) -
ログにアクセスし、ログ エクスプローラとオブザーバビリティ分析を使用する: ログ閲覧者 (
roles/logging.viewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
要件
- GKE クラスタでバージョン
1.36.0-gke.1601000以降を実行している必要があります。 - GKE クラスタで Cloud Logging を有効にします。
- モニタリングする垂直 Pod オートスケーラーがあることを確認します。垂直 Pod 自動スケーラーのフィールドに機密情報が含まれていないことを確認します。
費用
Cloud Logging を有効にして垂直 Pod オートスケーラーの決定ログを収集すると、Cloud Logging の料金が適用されます。
垂直 Pod 自動スケーラーの決定ログを有効にする
次のセクションのコマンドを使用すると、KCP_VPA によって生成されたログをエクスポートし、Cloud Logging の logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" に保存できます。
新しいクラスタでログを有効にする
KCP_VPA 意思決定ログを有効にして新しいクラスタを作成するには、次のコマンドを実行します。
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_VPA
次のように置き換えます。
CLUSTER_NAME: 作成または更新するクラスタの名前。PROJECT_ID: 実際の Cloud de Confiance プロジェクト ID。LOCATION: クラスタのコンピューティング リージョンまたはゾーン。
既存のクラスタでログを有効にする
既存のクラスタで KCP_VPA の決定ログを有効にするには、次の操作を行います。
クラスタの既存の構成を確認します。クラスタに特定のロギング コンポーネントがすでに構成されている場合は、既存のロギング構成に追加するか、上書きするかを決定します。
垂直 Pod 自動スケーラーの決定ログを有効にするには、次のコマンドを実行します。既存の構成に追加する場合は、既存のロギング構成もコマンドに追加します。
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEM,KCP_VPA次のように置き換えます。
CLUSTER_NAME: 作成または更新するクラスタの名前。PROJECT_ID: 実際の Cloud de Confiance プロジェクト ID。LOCATION: クラスタのコンピューティング リージョンまたはゾーン。
ロギングが有効になっていることを確認する
クラスタで KCP_VPA の決定ログが有効になっていることを確認するには、クラスタの更新されたロギング構成を取得してログのリストを確認します。これを行うには、次のコマンドを実行します。
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
次のように置き換えます。
CLUSTER_NAME: クラスタの名前。LOCATION: クラスタのコンピューティング リージョンまたはゾーン。
クラスタで KCP_VPA の決定ログが有効になっている場合、出力は次のようになります。
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_VPA
ログ エクスプローラで垂直 Pod オートスケーラー ログを表示する
垂直 Pod オートスケーラーの動作は、ログ エクスプローラでモニタリングできます。垂直 Pod 自動スケーラーのログを表示する手順は次のとおりです。
[ログ エクスプローラ] ページに移動します。
[すべてのログ名] を選択し、ログ名で
vpa-controllerを検索します。ログ エクスプローラには、プロジェクトで垂直 Pod オートスケーラー ログを有効にしたすべてのクラスタのログなど、すべての垂直 Pod オートスケーラー ログが表示されます。
クラスタ名またはワークロード名を使用してログをフィルタできます。たとえば、クラスタ内の特定のワークロードのイベントを一覧表示するには、次のクエリを使用してクラスタ名とワークロード名を指定します。
resource.labels.cluster_name="CLUSTER_NAME" AND jsonPayload.target.name="WORKLOAD_NAME"次のように置き換えます。
CLUSTER_NAME: クラスタの名前。WORKLOAD_NAME: ワークロードの名前。
垂直 Pod 自動スケーリングの決定ログを無効にする
既存のクラスタで
KCP_VPAの決定ログを無効にするには、次のコマンドを実行します。gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEMKCP_VPA決定ログが無効になっていることを確認します。これを行うには、次のコマンドを実行します。gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'クラスタで
KCP_VPAの決定ログが無効になっている場合、出力は次のようになります。SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
ログの種類
垂直 Pod 自動スケーリングの決定イベントは、GKE クラスタと同じプロジェクトの _Default bucket にある Cloud Logging の logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" ロケーションに保存されます。ログに記録されるイベントはすべて JSON 形式で、ログエントリの jsonPayload フィールドで確認できます。
生成されるログのタイプと頻度は、ワークロード用に構成された垂直 Pod 自動スケーリング モードによって異なります。VPA ログには、実行するオペレーションによって分類される 4 種類があります。
- 推奨事項の更新: 各垂直 Pod 自動スケーラーは、1 分ごとに新しい推奨事項の更新ログを 1 つ生成します。
- Pod の強制排除: 垂直 Pod 自動スケーラーが
Recreateモードでサイズ変更を決定すると、各垂直 Pod 自動スケーラーは Pod ごとに 1 つの Pod 強制排除ログを生成します。 - 強制排除時に推奨事項を適用する: 垂直 Pod 自動スケーラーが
Recreateモードでサイズ変更を決定すると、各垂直 Pod 自動スケーラーは Pod ごとに 1 つの推奨事項適用ログを生成します。 - 推奨事項をインプレースで適用する: 垂直 Pod オートスケーラーが
InPlaceOrRecreateモードでサイズ変更を決定すると、各垂直 Pod オートスケーラーは Pod ごとに 1 つの推奨事項をインプレースで適用するログを生成します。
コントローラが出力できるログの種類は、垂直 Pod オートスケーラーのモードによって異なります。次の表に、各モードで出力できるログを示します。
| 垂直 Pod オートスケーラーのモード | 出力できるログの種類 |
|---|---|
Auto(非推奨)または Recreate |
|
InPlaceOrRecreate |
|
InPlaceOrRecreate モードの垂直 Pod オートスケーラーの場合、In-place resize が失敗すると、オートスケーラーは Recreate モードと同じ動作をします。
最適化案を更新する
更新推奨ログは、次の垂直 Pod 自動スケーラー モードで生成できます。Auto(非推奨)、Recreate、InPlaceOrRecreate。
この決定ログの jsonPayload には、次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
vpaName |
VPA の名前。 |
vpaNamespace |
VPA の Namespace。 |
target |
この VPA がターゲットとするワークロード。
|
operation |
実行中のオペレーション。値は次のいずれかです。
|
state |
オペレーションの状態。値は次のいずれかです。
|
reason |
この理由は、オペレーションがスキップまたは失敗した理由を説明します。 オペレーション |
recommendedResources |
未加工の推奨事項。これは、VPA オブジェクトの Status.Recommendation フィールドとまったく同じです。
|
confidence |
推奨事項の信頼度。このフィールドは、状態が succeeded の場合に存在します。値は次のいずれかです。
|
更新の推奨事項ログの例:
{
"insertId": "ehz6w9d304v4zttg",
"jsonPayload": {
"state": "SUCCEEDED",
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-c"
},
"recommendedResources": [
{
"lowerBound": {
"memory": "5Mi",
"cpu": "5m"
},
"containerName": "nginx",
"uncappedTarget": {
"memory": "5Mi",
"cpu": "1m"
},
"upperBound": {
"memory": "5Mi",
"cpu": "5m"
},
"target": {
"memory": "5Mi",
"cpu": "5m"
}
}
],
"operation": "UPDATE_RECOMMENDATION",
"target": {
"name": "my-workload",
"kind": "Deployment",
"apiVersion": "apps/v1"
},
"vpaNamespace": "default",
"vpaName": "my-vpa"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"component_location": "us-central1-c",
"project_id": "my-project",
"cluster_name": "my-cluster",
"location": "us-central1-c",
"component_name": "vpa-controller"
}
},
"timestamp": "2026-01-22T19:28:16.069635605Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:28:17.750678359Z"
}
Pod を強制排除する
Pod の削除ログは、VPA モード Auto(非推奨)と Recreate で使用できます。このログタイプは、In-place resize オペレーションが失敗した場合、VPA モード InPlaceOrRecreate でも可能です。
この決定ログの jsonPayload には、次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
vpaName |
VPA の名前。 |
vpaNamespace |
VPA の Namespace。 |
target |
この VPA がターゲットとするワークロード。
|
operation |
実行中のオペレーション。値は次のいずれかです。
|
state |
オペレーションの状態。値は次のいずれかです。
|
reason |
この理由は、オペレーションがスキップまたは失敗した理由を説明します。 オペレーション |
pod |
Pod の名前。 |
Pod の削除ログの例:
{
"insertId": "8x278gc4f75oowf4",
"jsonPayload": {
"target": {
"kind": "Deployment",
"apiVersion": "apps/v1",
"name": "my-deployment"
},
"operation": "EVICT_POD",
"vpaName": "my-vpa",
"pod": "my-deployment-856ff7966-gr4rh",
"state": "SUCCEEDED",
"vpaNamespace": "default",
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-c"
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"component_name": "vpa-controller",
"cluster_name": "my-cluster",
"component_location": "us-central1-c",
"location": "us-central1-c",
"project_id": "my-project"
}
},
"timestamp": "2026-01-22T19:26:25.283067078Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:27.766941073Z"
}
削除時に推奨事項を適用する
削除ログの推奨事項の適用は、VPA モード Auto(非推奨)と Recreate で使用できます。このログタイプは、In-place resize が失敗した場合、VPA モード InPlaceOrRecreate でも可能です。
この決定ログの jsonPayload には、次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
vpaName |
VPA の名前。 |
vpaNamespace |
VPA の Namespace。 |
target |
この VPA がターゲットとするワークロード。
|
operation |
実行中のオペレーション。値は次のいずれかです。
|
state |
オペレーションの状態。値は次のいずれかです。
|
reason |
この理由は、オペレーションがスキップまたは失敗した理由を説明します。 オペレーション |
pod |
Pod の名前。 |
appliedResources |
Pod に適用されるリソース。
|
confidence |
推奨事項の信頼度。このフィールドは、状態が succeeded の場合に存在します。値は次のいずれかです。
|
削除ログに最適化案を適用する例:
{
"insertId": "366tcmgdkq94eppg",
"jsonPayload": {
"appliedResources": [
{
"containerName": "my-container",
"requests": {
"memory": "15Mi",
"cpu": "15m"
}
}
],
"vpaName": "my-vpa",
"vpaNamespace": "default",
"instance": {
"zone": "us-central1-c",
"vm_name": "my-unique-vm-identifier"
},
"pod": "my-deployment-856ff7966-%",
"state": "SUCCEEDED",
"target": {
"name": "my-deployment",
"kind": "Deployment",
"apiVersion": "apps/v1"
},
"operation": "APPLY_RECOMMENDATION_ON_EVICTION"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"location": "us-central1-c",
"component_location": "us-central1-c",
"cluster_name": "my-cluster",
"component_name": "vpa-controller",
"project_id": "my-project"
}
},
"timestamp": "2026-01-22T19:26:25.344313199Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:32.744122156Z"
}
最適化案をその場で適用する
VPA モード InPlaceOrRecreate で、適用された推奨事項のログを利用できます。
この決定ログの jsonPayload には、次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
vpaName |
VPA の名前。 |
vpaNamespace |
VPA の Namespace。 |
target |
この VPA がターゲットとするワークロード。
|
operation |
実行中のオペレーション。値は次のいずれかです。
|
state |
オペレーションの状態。値は次のいずれかです。
|
reason |
この理由は、オペレーションがスキップまたは失敗した理由を説明します。 オペレーション |
pod |
Pod の名前。 |
appliedResources |
Pod に適用されるリソース。
|
confidence |
推奨事項の信頼度。このフィールドは、状態が succeeded の場合に存在します。値は次のいずれかです。
|
推奨事項の適用ログの例:
{
"insertId": "suzfuepgyiwap7hb",
"jsonPayload": {
"pod": "my-deployment-cdc7fd7b4-grxlk",
"vpaNamespace": "default",
"state": "SUCCEEDED",
"target": {
"name": "my-deployment",
"apiVersion": "apps/v1",
"kind": "Deployment"
},
"operation": "APPLY_RECOMMENDATION_IN_PLACE",
"appliedResources": [
{
"containerName": "my-container",
"limits": {
"cpu": "10m",
"memory": "10Mi"
},
"requests": {
"cpu": "5m",
"memory": "5Mi"
}
}
],
"instance": {
"zone": "us-central1-c",
"vm_name": "my-unique-vm-identifier"
},
"vpaName": "my-vpa"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"project_id": "my-project",
"component_location": "us-central1-c",
"cluster_name": "my-cluster",
"location": "us-central1-c",
"component_name": "vpa-controller"
}
},
"timestamp": "2026-01-22T19:26:25.214095375Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:27.766941073Z"
}
トラブルシューティング
このセクションでは、垂直 Pod 自動スケーラーのイベントに関連する問題と解決手順について説明します。
予定はありません
垂直 Pod 自動スケーリングの決定イベントが表示されない場合は、次のすべてを行っていることを確認してください。
- クラスタで Cloud Logging を有効にしている。
- クラスタの
KCP_VPAログを有効にしている。 - 正しく構成された
vpaオブジェクトを少なくとも 1 つクラスタにデプロイしている。
vpa オブジェクトの構成を確認するには、次のコマンドを実行します。
kubectl describe vpa $VPA_NAME
それでも KCP_VPA ログが表示されない場合は、Cloud de Confiance サポートにお問い合わせください。
次のステップ
- GKE ログについてを確認する。
- GKE ログについて理解する。
- サンプルクエリを使用して、特定の GKE ログを見つける方法を確認する。
- 垂直 Pod 自動スケーリングの詳細を確認する。