수직형 Pod 자동 확장

이 페이지에서는 수직형 Pod 자동 확장을 간략하게 설명하며, 컨테이너의 CPU 요청메모리 요청을 조정하는 데 사용할 수 있는 방법을 설명합니다. 이 페이지는 VerticalPodAutoscaler 커스텀 리소스 및 관련 유형의 참조 자료도 제공합니다.

개요

수직형 포드 자동 확장(VPA)을 사용하면 컨테이너의 CPU 메모리 요청에 어떤 값을 지정해야 할지를 고민하지 않아도 됩니다. 자동 확장 처리가 CPU 및 메모리 요청의 값을 추천하거나, CPU 및 메모리 요청의 값을 자동으로 업데이트할 수 있습니다.

수직형 포드 자동 확장은 다음과 같은 이점을 제공합니다.

  • 포드가 필요한 만큼만 사용하기 때문에 클러스터 노드가 효율적으로 사용됩니다.

  • 사용할 수 있는 적절한 리소스가 있는 노드에 포드가 예약됩니다.

  • CPU 및 메모리 요청의 정확한 값을 알아내기 위해 런타임을 소비하는 벤치마크 테스트를 실행할 필요가 없습니다.

  • 시간이 지나면서 자동 확장 처리가 사용자 개입 없이 CPU 및 메모리 요청을 조정할 수 있기 때문에 유지관리 시간이 단축됩니다.

베타 제한사항:

  • 클러스터에 노드가 1천 개 넘게 있다면 수직형 포드 자동 확장 처리를 사용 설정하지 마세요.

  • 수직형 Pod 자동 확장 처리는 클러스터당 VPA 객체를 최대 200개까지 지원합니다.

  • 수직형 Pod 자동 확장은 버전 1.12.6부터 리전 클러스터에서 지원됩니다.

  • CPU 또는 메모리에서는 수평형 Pod 자동 확장(HPA)과 함께 수직형 Pod 자동 확장을 사용하지 마세요. 하지만 커스텀 측정항목과 외부 측정항목에는 VPA와 HPA를 함께 사용할 수 있습니다.

자동 모드의 수직형 Pod 자동 확장

Kubernetes 제한사항에 따라 실행 중인 포드의 리소스 요청을 수정하는 유일한 방법은 포드를 다시 만드는 것입니다. 따라서 updateMode를 'Auto'로 해서 VerticalPodAutoscaler를 만드는 경우에는 VerticalPodAutoscaler가 포드의 리소스 요청을 변경해야 할 때 포드를 삭제합니다.

Pod 재시작 수를 제한하려면 Pod 중단 예산을 사용합니다.

클러스터가 새로운 크기의 작업 부하를 처리할 수 있도록 클러스터 자동 확장 처리노드 자동 프로비저닝을 사용합니다. 수직형 Pod 자동 확장 처리는 업데이트 전에 클러스터 자동 확장 처리에 업데이트를 알리며 다시 생성하기 전에 크기가 조절된 작업 부하에 필요한 리소스를 제공하여 중단 시간을 최소화합니다.

다음 단계

참조

VerticalPodAutoscaler v1beta2 autoscaling.k8s.io

필드

TypeMeta

API 그룹, 버전, 종류

metadata

ObjectMeta

표준 객체 메타데이터

spec

VerticalPodAutoscalerSpec

VerticalPodAutoscaler의 원하는 동작

status

VerticalPodAutosclerStatus

가장 최근에 관찰된 VerticalPodAutoscaler 상태

VerticalPodAutoscalerSpec v1beta2 autoscaling.k8s.io

필드
targetRef

CrossVersionObjectReference

자동 확장 처리가 제어할 Pod 집합을 관리하는 컨트롤러를 가리킵니다(예: 배포 또는 StatefulSet). [확장](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#scalespec-v1-autoscaling){:.external} 하위 리소스가 있는 컨트롤러의 VerticalPodAutoscaler를 가리킬 수 있습니다. 일반적으로 VerticalPodAutoscaler는 컨트롤러의 ScaleStatus에서 Pod 집합을 검색합니다. 일부 잘 알려진 컨트롤러(예: DaemonSet)의 경우, VerticalPodAutoscaler는 컨트롤러 사양에서 Pod 집합을 검색합니다.

updatePolicy

PodUpdatePolicy

Pod가 시작될 때 추천 업데이트가 적용되는지 여부와 Pod 수명 동안 추천 업데이트가 적용되는지 여부를 지정합니다.

resourcePolicy

PodResourcePolicy

개별 컨테이너의 CPU 및 메모리 요청을 조정하는 방법에 대한 정책을 지정합니다.

VerticalPodAutoscalerList v1beta2 autoscaling.k8s.io

필드

TypeMeta

API 그룹, 버전, 종류

metadata

ObjectMeta

표준 객체 메타데이터

items

VerticalPodAutoscaler array

VerticalPodAutoscaler 객체 목록

PodUpdatePolicy v1beta2 autoscaling.k8s.io

필드
updateMode

string

포드가 시작될 때 추천 업데이트가 적용되는지 여부와 포드의 수명 동안 추천 업데이트가 적용되는지 여부를 지정합니다. 값에는 'Off', 'Initial', 'Recreate', 'Auto' 등이 있습니다.

PodResourcePolicy v1beta2 autoscaling.k8s.io

필드
containerPolicies

ContainerResourcePolicy array

개별 컨테이너의 리소스 정책 배열

ContainerResourcePolicy v1beta2 autoscaling.k8s.io

필드
containerName

string

정책이 적용될 컨테이너의 이름입니다. 지정하지 않으면 기본 정책으로 사용됩니다.

mode

ContainerScalingMode

컨테이너가 시작될 때 추천 업데이트가 적용되는지 여부와 컨테이너의 수명 동안 추천 업데이트가 적용되는지 여부를 지정합니다. 가능한 값은 'Off'와 'Auto'입니다.

minAllowed

ResourceList

컨테이너에 허용되는 최소 CPU 요청 및 메모리 요청을 지정합니다.

maxAllowed

ResourceList

컨테이너에 허용되는 최대 CPU 요청 및 메모리 요청을 지정합니다.

VerticalPodAutoscalerStatus v1beta2 autoscaling.k8s.io

필드
recommendation

RecommendedPodResources

최근에 추천된 CPU 및 메모리 요청입니다.

conditions

VerticalPodAutoscalerCondition array

VerticalPodAutoscaler의 현재 상태를 설명합니다.

RecommendedPodResources v1beta2 autoscaling.k8s.io

필드
containerRecommendation

RecommendedContainerResources array

개별 컨테이너의 리소스 추천 배열

RecommendedContainerResources v1beta2 autoscaling.k8s.io

필드
containerName

string

추천이 적용되는 컨테이너의 이름

target

ResourceList

컨테이너에 추천되는 CPU 요청 및 메모리 요청

lowerBound

ResourceList

컨테이너에 추천되는 최소 CPU 요청 및 메모리 요청. 이 양은 애플리케이션을 안정적으로 실행하는 데 충분하다는 것을 보장하지 않습니다. 더 적은 CPU 및 메모리 요청으로 실행하면 성능이나 가용성에 상당한 영향을 미칠 가능성이 높습니다.

upperBound

ResourceList

컨테이너에 추천되는 최대 CPU 요청 및 메모리 요청. 이 값보다 높은 CPU 및 메모리 요청은 낭비될 가능성이 높습니다.

uncappedTarget

ResourceList

자동 확장 처리에서 계산한 최근의 리소스 추천으로, ContainerResourcePolicy를 고려하지 않고 실제 리소스 사용량만을 기준으로 계산한 것입니다. 실제 리소스 사용량으로 인해 대상이 ContainerResourcePolicy를 위반하게 되는 경우 제한된 추천과 다를 수 있습니다. 이 필드는 상태 표시용이며 실제 리소스 할당에는 영향을 미치지 않습니다.

VerticalPodAutoscalerCondition v1beta2 autoscaling.k8s.io

필드
type

VerticalPodAutoscalerConditionType

설명하고 있는 조건의 유형. 가능한 값은 'RecommendationProvided', 'LowConfidence', 'NoPodsMatched', 'FetchingHistory'입니다.

status

ConditionStatus

조건의 상태. 가능한 값은 True, False, Unknown입니다.

lastTransitionTime

Time

조건이 한 상태에서 다른 상태로 전환된 마지막 시간

reason

string

마지막 상태 전환의 이유

message

string

사람이 읽을 수 있으며 마지막 상태 전환의 세부정보를 제공하는 문자열

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine 문서