이 페이지에서는 Google Kubernetes Engine (GKE)의 수직형 포드 자동 확장 처리에서 내보내는 결정 이벤트에 대한 정보를 제공합니다. 이러한 이벤트를 분석하면 수직형 포드 자동 확장 처리 컨트롤러가 워크로드 확장을 관리하는 방식을 파악하고 작업의 의사결정 프로세스를 이해할 수 있습니다.
수직형 포드 자동 확장 처리기는 결정 이벤트를 발생시키며, 이 이벤트는 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 및 Cloud Logging API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (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을 활성화합니다.
Console 하단의 프레임에서 Cloud Shell 세션이 열립니다.
이 튜토리얼에서 명령어를 실행하기 전에 기본 프로젝트가 샘플 앱을 배포할 프로젝트 ID로 설정되어 있는지 확인합니다. 아직 설정되지 않았으면 Cloud Shell에서 다음 명령어를 실행합니다.
gcloud config set project PROJECT_ID
여기서 PROJECT_ID를 프로젝트 ID로 바꿉니다.
필수 역할 및 권한
로그 생성을 사용 설정하고 로그에 액세스하여 처리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
클러스터에서 수직형 포드 자동 확장 처리기 이벤트 로깅을 사용 설정하려면 다음이 필요합니다.
Kubernetes Engine 클러스터 관리자 (
roles/container.clusterAdmin) -
로그에 액세스하고 로그 탐색기 및 관측 가능성 분석을 사용하려면 로그 뷰어 (
roles/logging.viewer)가 필요합니다.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
요구사항
- GKE 클러스터에서 버전
1.36.0-gke.1601000이상을 실행해야 합니다. - GKE 클러스터에서 Cloud Logging을 사용 설정합니다.
- 모니터링할 수직형 포드 자동 확장 처리기가 있는지 확인합니다. 수직형 포드 자동 확장 처리기 필드에 민감한 정보가 포함되지 않도록 합니다.
비용
Cloud Logging을 사용 설정하고 수직형 포드 자동 확장 결정 로그를 수집하면 Cloud Logging 가격 책정이 적용됩니다.
수직형 포드 자동 확장 처리 결정 로그 사용 설정
다음 섹션의 명령어는 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 프로젝트 IDLOCATION: 클러스터의 컴퓨팅 리전 또는 영역입니다.
기존 클러스터에서 로그 사용 설정
기존 클러스터에서 KCP_VPA 결정 로그를 사용 설정하려면 다음 단계를 따르세요.
클러스터의 기존 구성을 검토합니다. 클러스터에 이미 구성된 특정 로깅 구성요소가 있는 경우 기존 로깅 구성을 추가할지 덮어쓸지 결정합니다.
수직형 포드 자동 확장 처리 결정 로그를 사용 설정하려면 다음 명령어를 실행합니다. 기존 구성에 추가하는 경우 기존 로깅 구성도 명령어에 추가합니다.
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 자동 확장 처리기 로그 보기
로그 탐색기에서 수직형 포드 자동 확장 처리의 동작을 모니터링할 수 있습니다. 수직형 포드 자동 확장 처리 로그를 보려면 다음 단계를 완료하세요.
로그 탐색기 페이지로 이동합니다.
모든 로그 이름을 선택하고 로그 이름에서
vpa-controller를 검색합니다.로그 탐색기에는 프로젝트에서 수직형 포드 자동 확장 프로그램 로그를 사용 설정한 모든 클러스터의 로그를 비롯한 모든 수직형 포드 자동 확장 프로그램 로그가 표시됩니다.
클러스터 이름 또는 워크로드 이름을 사용하여 로그를 필터링할 수 있습니다. 예를 들어 클러스터의 특정 워크로드에서 이벤트를 나열하려면 다음 쿼리를 사용하여 클러스터 이름과 워크로드 이름을 지정합니다.
resource.labels.cluster_name="CLUSTER_NAME" AND jsonPayload.target.name="WORKLOAD_NAME"다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.WORKLOAD_NAME: 워크로드의 이름입니다.
수직형 포드 자동 확장 결정 로그 사용 중지
기존 클러스터에서
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
로그 유형
수직형 포드 자동 확장 처리의 결정 이벤트는 GKE 클러스터와 동일한 프로젝트의 _Default bucket에 있는 logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" 위치의 Cloud Logging에 저장됩니다. 로깅된 모든 이벤트는 JSON 형식이며, 로그 항목의 jsonPayload 필드에서 찾을 수 있습니다.
생성되는 로그의 유형과 빈도는 워크로드에 구성된 수직형 포드 자동 확장 모드에 따라 다릅니다. VPA 로그에는 실행하는 작업에 따라 분류된 네 가지 유형이 있습니다.
- 업데이트 추천: 각 수직형 포드 자동 확장기는 매분 새로운 업데이트 추천 로그를 하나 생성합니다.
- 포드 삭제: 수직형 포드 자동 확장 처리가
Recreate모드에서 크기를 조절하기로 결정하면 각 수직형 포드 자동 확장 처리는 각 포드에 대해 포드 삭제 로그를 하나씩 생성합니다. - 강제 종료 시 권장사항 적용: 각 수직형 포드 자동 확장기는 수직형 포드 자동 확장기가
Recreate모드에서 크기를 조절하기로 결정할 때 각 포드에 대해 하나의 적용 권장사항 로그를 생성합니다. - 추천을 제자리에서 적용: 수직형 포드 자동 확장 프로그램이
InPlaceOrRecreate모드에서 크기를 조절하기로 결정하면 각 수직형 포드 자동 확장 프로그램은 각 포드에 대해 하나의 제자리에서 적용 로그를 생성합니다.
컨트롤러가 내보낼 수 있는 로그 유형은 수직 포드 자동 확장 처리의 모드에 따라 다릅니다. 다음 표에는 각 모드에 대해 내보낼 수 있는 로그가 나와 있습니다.
| 수직형 포드 자동 확장 처리 모드 | 전송될 수 있는 로그 유형 |
|---|---|
Auto (지원 중단됨) 또는 Recreate |
|
InPlaceOrRecreate |
|
InPlaceOrRecreate 모드의 수직형 포드 자동 확장 처리의 경우 In-place resize이 실패하면 자동 확장 처리는 Recreate 모드와 동일하게 동작합니다.
추천 업데이트
업데이트 추천 로그는 다음 수직형 포드 자동 확장 처리 모드에서 생성할 수 있습니다. Auto (지원 중단됨), Recreate, InPlaceOrRecreate
이 결정 로그의 jsonPayload에는 다음 필드가 포함됩니다.
| 필드 | 설명 |
|---|---|
vpaName |
VPA의 이름입니다. |
vpaNamespace |
VPA의 네임스페이스입니다. |
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"
}
포드 제거
VPA 모드 Auto (지원 중단됨) 및 Recreate에서 포드 제거 로그를 사용할 수 있습니다.
In-place resize 작업이 실패하는 경우 VPA 모드 InPlaceOrRecreate에서도 이 로그 유형이 가능합니다.
이 결정 로그의 jsonPayload에는 다음 필드가 포함됩니다.
| 필드 | 설명 |
|---|---|
vpaName |
VPA의 이름입니다. |
vpaNamespace |
VPA의 네임스페이스입니다. |
target |
이 VPA가 타겟팅하는 워크로드입니다.
|
operation |
실행 중인 작업입니다. 값은 다음 중 하나입니다.
|
state |
작업의 상태입니다. 값은 다음 중 하나입니다.
|
reason |
이유는 작업이 건너뛰거나 실패한 이유를 설명합니다.
|
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의 네임스페이스입니다. |
target |
이 VPA가 타겟팅하는 워크로드입니다.
|
operation |
실행 중인 작업입니다. 값은 다음 중 하나입니다.
|
state |
작업 상태입니다. 값은 다음 중 하나입니다.
|
reason |
이유는 작업이 건너뛰거나 실패한 이유를 설명합니다.
|
pod |
포드의 이름입니다. |
appliedResources |
포드에 적용된 리소스입니다.
|
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의 네임스페이스입니다. |
target |
이 VPA가 타겟팅하는 워크로드입니다.
|
operation |
실행 중인 작업입니다. 값은 다음 중 하나입니다.
|
state |
작업의 상태입니다. 값은 다음 중 하나입니다.
|
reason |
이유는 작업이 건너뛰거나 실패한 이유를 설명합니다.
|
pod |
포드의 이름입니다. |
appliedResources |
포드에 적용된 리소스입니다.
|
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"
}
문제 해결
이 섹션에서는 수직형 포드 자동 확장 처리 이벤트와 관련된 문제와 해결 단계를 설명합니다.
일정이 없습니다.
수직형 포드 자동 확장 처리 결정 이벤트가 표시되지 않으면 다음을 모두 완료했는지 확인합니다.
- 클러스터에 Cloud Logging을 사용 설정했습니다.
- 클러스터에
KCP_VPA로그를 사용 설정했습니다. - 올바르게 구성된
vpa객체를 클러스터에 하나 이상 배포했습니다.
vpa 객체 구성을 보려면 다음 명령어를 실행합니다.
kubectl describe vpa $VPA_NAME
그래도 KCP_VPA 로그가 표시되지 않으면 Cloud de Confiance 지원팀에 문의하세요.
다음 단계
- GKE 로그 정보를 참고하세요.
- GKE 로그를 이해합니다.
- 샘플 쿼리를 사용하여 특정 GKE 로그를 찾는 방법을 알아봅니다.
- 수직형 포드 자동 확장 자세히 알아보기