수직형 포드 자동 확장은 Kubernetes 포드 내 컨테이너의 CPU 및 메모리 리소스 요청과 한도를 자동으로 설정합니다. 수직형 포드 자동 확장은 과거 및 현재 리소스 사용량을 분석하여 권장사항을 제공하며, 이 권장사항은 표시하거나 포드를 업데이트하여 자동으로 적용할 수 있습니다. 이 기능은 리소스 할당을 적절하게 조정하여 안정성과 비용 효율성을 개선합니다.
시작하기 전에
수직형 포드 자동 확장을 구성하기 전에 다음 필수 요건을 충족하는지 확인하세요.
- 실행 중인 베어메탈 클러스터가 있습니다.
- 클러스터에 대한
kubectl
액세스 권한이 있습니다. - 클러스터에서 Metrics Server를 사용할 수 있습니다. 베어메탈 클러스터에는 기본적으로 Metrics Server가 포함됩니다.
수직형 포드 자동 확장 사용 설정
미리보기 주석을 설정하고 클러스터 사양을 구성하여 베어 메탈 클러스터에서 수직형 포드 자동 확장을 사용 설정합니다.
클러스터 커스텀 리소스에 미리보기 주석을 추가하거나 업데이트합니다.
클러스터 커스텀 리소스를 직접 수정하거나 클러스터 구성 파일을 수정하고
bmctl update
를 사용합니다.metadata: annotations: preview.baremetal.cluster.gke.io/vertical-pod-autoscaler: enable
클러스터 커스텀 리소스의
spec
를 수정하여verticalPodAutoscaling
필드를 포함하고enableUpdater
및enableMemorySaver
모드를 지정합니다.apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: cluster1 namespace: cluster-cluster1 annotations: preview.baremetal.cluster.gke.io/vertical-pod-autoscaler: enable spec: # ... other cluster spec fields verticalPodAutoscaling: enableUpdater: true # Set to true for automated updates enableMemorySaver: true # Set to true to reduce recommender memory usage
클러스터 구성 파일을 수정한 경우 다음 명령어를 사용하여 변경사항을 적용합니다.
bmctl update cluster -c CLUSTER_NAME --kubeconfig KUBECONFIG
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터 이름입니다.KUBECONFIG
: 클러스터 kubeconfig 파일의 경로입니다.
VerticalPodAutoscaler
커스텀 리소스 만들기
클러스터에서 수직형 포드 자동 확장을 사용 설정한 후 특정 워크로드를 타겟팅하는 VerticalPodAutoscaler
커스텀 리소스를 정의합니다.
타겟 워크로드와 동일한 네임스페이스에
VerticalPodAutoscaler
리소스를 정의합니다.이 커스텀 리소스는
targetRef
및 리소스 정책을 사용하여 타겟팅할 포드를 지정합니다.apiVersion: "autoscaling.k8s.io/v1" kind: VerticalPodAutoscaler metadata: name: hamster-vpa spec: targetRef: apiVersion: "apps/v1" kind: Deployment name: hamster resourcePolicy: containerPolicies: - containerName: '*' minAllowed: cpu: 100m memory: 50Mi maxAllowed: cpu: 1 memory: 500Mi controlledResources: ["cpu", "memory"]
다음 명령어를 사용하여
VerticalPodAutoscaler
매니페스트를 적용합니다.kubectl apply -f VPA_MANIFEST \ --kubeconfig KUBECONFIG
다음을 바꿉니다.
VPA_MANIFEST
:VerticalPodAutoscaler
매니페스트 파일의 경로입니다.KUBECONFIG
: 클러스터 kubeconfig 파일 경로
수직형 포드 자동 확장 모드 이해하기
수직형 포드 자동 확장은 리소스 권장사항을 적용하는 방식을 제어하는 다양한 모드로 작동합니다.
추천 모드
권장 모드에서 수직형 포드 자동 확장은 추천자 구성요소를 설치합니다. 이 구성요소는 리소스 사용량을 분석하고 사용자가 만든 VerticalPodAutoscaler
커스텀 리소스의 상태 섹션에 CPU 및 메모리 요청과 한도에 대한 권장 값을 게시합니다.
리소스 요청 및 제한 권장사항을 보려면 다음 명령어를 사용하세요.
kubectl describe vpa VPA_NAME \
--kubeconfig KUBECONFIG \
-n CLUSTER_NAMESPACE
Replace the following:
* `VPA_NAME`: the name of the `VerticalPodAutoscaler`
that's targeting the workloads for which you are considering resource
adjustments.
* `KUBECONFIG`: the path of the cluster kubeconfig
file.
* `CLUSTER_NAMESPACE`: the name of the cluster that's
running vertical Pod autoscaling.
대답에는 다음 샘플과 유사한 Status
섹션이 포함되어야 합니다.
Status:
Conditions:
Last Transition Time: 2025-08-04T23:53:32Z
Status: True
Type: RecommendationProvided
Recommendation:
Container Recommendations:
Container Name: hamster
Lower Bound:
Cpu: 100m
Memory: 262144k
Target:
Cpu: 587m
Memory: 262144k
Uncapped Target:
Cpu: 587m
Memory: 262144k
Upper Bound:
Cpu: 1
Memory: 500Mi
이 모드에서는 포드가 자동으로 업데이트되지 않습니다. 이러한 권장사항을 사용하여 Pod 구성을 수동으로 업데이트하세요. enableUpdater
이 설정되지 않았거나 false
인 경우의 기본 동작입니다.
자동 업데이트 모드
enableUpdater
enableUpdater
을 true
로 설정하면 베어메탈 수명 주기 컨트롤러는 추천기 외에도 수직형 포드 자동 확장 처리 업데이터 및 허용 컨트롤러 구성요소를 배포합니다. 업데이터는 현재 리소스 요청이 추천과 크게 다른 포드를 모니터링합니다.
VerticalPodAutoscaler
리소스의 업데이트 정책은 업데이트 프로그램이 추천을 적용하는 방법을 지정합니다. 기본적으로 업데이트 모드는 Auto
이며, 이는 업데이터가 포드 생성 시 업데이트된 리소스 설정을 할당하도록 합니다. 다음 VerticalPodAutoscaler
샘플은 업데이트 모드를 Initial
로 설정하는 방법을 보여줍니다.
apiVersion: "autoscaling.k8s.io/v1"
kind: VerticalPodAutoscaler
metadata:
name: hamster-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: hamster
resourcePolicy:
updatePolicy:
updateMode: "Initial"
...
업데이터는 다음 5가지 모드를 지원합니다.
Auto
: 업데이터가 포드를 제거합니다. 승인 컨트롤러는 새 포드의 생성 요청을 가로채고 추천 도구에서 제공하는 권장 CPU 및 메모리 값을 사용하도록 수정합니다. 리소스를 업데이트하려면 포드를 다시 만들어야 하므로 중단이 발생할 수 있습니다. 업데이터가 준수하는 포드 중단 예산을 사용하여 퇴출 프로세스를 관리합니다. 이 모드는Recreate
과 동일합니다.Recreate
: 업데이트 프로그램은 포드를 삭제하고 포드가 다시 생성될 때 권장되는 리소스 요청 및 한도를 할당합니다.InPlaceOrRecreate
(알파): 업데이터는 최선을 다해 인플레이스 업데이트를 시도하지만 인플레이스 업데이트가 불가능한 경우 포드를 다시 만드는 것으로 대체할 수 있습니다. 자세한 내용은 인플레이스 포드 크기 조절 문서를 참고하세요.Initial
: 업데이트 프로그램은 포드 생성 시에만 리소스 요청을 할당하고 이후에 항목을 변경하지 않습니다.Off
: 업데이트 프로그램은 포드의 리소스 요구사항을 자동으로 변경하지 않습니다. 권장사항을 계산하고VerticalPodAutoscaler
객체에서 검사할 수 있습니다.
VerticalPodAutoscaler
커스텀 리소스에 대한 자세한 내용은 kubectl
를 사용하여 버전 1.33.0 이상 클러스터에 설치된 verticalpodautoscalercheckpoints.autoscaling.k8s.io
커스텀 리소스 정의를 가져오세요.
다음 샘플은 hamster
컨테이너의 Status
섹션에 리소스 추천이 표시되는 방식을 보여줍니다. 또한 이 샘플에서는 업데이트 프로그램이 다시 생성된 포드에 권장 리소스 구성을 자동으로 할당하기 전에 포드를 강제 종료할 때 발생하는 포드 강제 종료 이벤트의 예를 보여줍니다.
Spec:
Resource Policy:
Container Policies:
Container Name: *
Controlled Resources:
cpu
memory
Max Allowed:
Cpu: 1
Memory: 500Mi
Min Allowed:
Cpu: 100m
Memory: 50Mi
Target Ref:
API Version: apps/v1
Kind: Deployment
Name: hamster
Update Policy:
Update Mode: Auto
Status:
Conditions:
Last Transition Time: 2025-08-04T23:53:32Z
Status: True
Type: RecommendationProvided
Recommendation:
Container Recommendations:
Container Name: hamster
Lower Bound:
Cpu: 100m
Memory: 262144k
Target:
Cpu: 587m
Memory: 262144k
Uncapped Target:
Cpu: 587m
Memory: 262144k
Upper Bound:
Cpu: 1
Memory: 500Mi
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EvictedPod 49s vpa-updater VPA Updater evicted Pod hamster-7cb59fb657-lkrk4 to apply resource recommendation.
메모리 절약 모드
메모리 절약 모드는 수직형 포드 자동 확장 추천 도구 구성요소의 메모리 공간을 줄입니다. enableMemorySaver
을 true
로 설정하면 추천기는 일치하는 VerticalPodAutoscaler
커스텀 리소스가 있는 포드의 집계만 추적하고 계산합니다.
이 경우 기존 워크로드에 새 VerticalPodAutoscaler
맞춤 리소스를 만들면 추천자가 정확한 추천을 제공하기에 충분한 기록을 수집하는 데 시간이 걸립니다 (최대 24시간). 이 모드는 대부분의 클러스터 유형에서 기본적으로 false
이지만 에지 클러스터의 경우 기본적으로 true
입니다.
수직형 포드 자동 확장 사용 중지
클러스터에서 커스텀 리소스와 구성을 삭제하여 수직형 포드 자동 확장을 사용 중지합니다.
생성한
VerticalPodAutoscaler
맞춤 리소스를 삭제합니다.클러스터 커스텀 리소스를 수정하고
spec
에서 전체verticalPodAutoscaling
섹션을 삭제합니다.클러스터 커스텀 리소스를 직접 수정하거나 클러스터 구성 파일을 수정하고
bmctl update
를 사용할 수 있습니다.클러스터 커스텀 리소스에서
preview.baremetal.cluster.gke.io/vertical-pod-autoscaler
주석을 삭제합니다.
제한사항
수직형 포드 자동 확장을 사용할 때는 다음 제한사항을 고려하세요.
- 워크로드의 실제 메모리 사용량에 대한 제한된 공개 상태로 인해 수직형 Pod 자동 확장을 아직 JVM 기반 워크로드에서 사용할 수 없습니다.
- 업데이터는 배포가 수정된 리소스 값으로 포드를 대체할 때 최소 2개의 포드 복제본이 필요합니다.
- 업데이터는 메모리 부족 (OOM) 오류로 인해 비정상 종료가 반복되는 포드를 빠르게 업데이트하지 않습니다.
- 포드의
InPlaceOrRecreate
업데이트 정책은 수직형 포드 자동 확장 내의 알파 기능입니다. 최선을 다해 준비된 업데이트를 시도하지만 준비된 업데이트가 불가능한 경우 포드를 재생성할 수 있습니다.
다음 단계
- 포드 중단 예산을 살펴봅니다.