다차원 포드 자동 확장을 클러스터를 확장하기 위해 단일 방법을 택할 필요가 없습니다. 다중 포드 자동 확장을 사용하면 CPU 기반 수평 확장 및 메모리 기반 수직 확장을 동시에 사용할 수 있습니다.
MultidimPodAutoscaler
객체는 각 복제본의 평균 CPU 사용률이 대상 사용률과 일치하도록 메모리 요청을 수정하고 복제본을 추가합니다.
기본 요건
- GKE 클러스터 버전 1.9.4-gke.1700 이상이어야 합니다.
- Standard 클러스터의 경우 클러스터에 수직형 포드 자동 확장을 사용 설정합니다. Autopilot 클러스터에는 이미 수직형 포드 자동 확장이 사용 설정되어 있습니다.
다차원적 포드 자동 확장 사용
이 예시에서는 배포 및 MultidimPodAutoscaler
객체를 생성하여 배포를 자동 확장하는 방법을 보여줍니다.
배포 만들기
MultidimPodAutoscaler
를 만들려면 먼저 이를 모니터링하는 워크로드를 만들어야 합니다. 다음 php-apache.yaml
파일은 CPU 요청의 값을 지정합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 80
resources:
# Since MPA does not specify CPU requests, you must specify a request in
# the Deployment
limits:
cpu: 500m
requests:
cpu: 200m
배포를 만들려면 php-apache.yaml
매니페스트를 적용합니다.
kubectl apply -f php-apache.yaml
MultidimPodAutoscaler 만들기
배포를 만든 후에는 MultidimPodAutoscaler
객체를 만들 수 있습니다. 다음 MultidimPodAutoscaler
매니페스트는 지정한 값을 기반으로 복제본 및 메모리 요청 수를 자동으로 조정합니다.
이 예시의 필드에 대한 자세한 내용은 API 참조 섹션을 확인하세요.
apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
name: php-apache-autoscaler
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
goals:
metrics:
- type: Resource
resource:
# Define the target CPU utilization request here
name: cpu
target:
type: Utilization
averageUtilization: 60
constraints:
global:
minReplicas: 1
maxReplicas: 5
containerControlledResources: [ memory ]
container:
- name: '*'
# Define boundaries for the memory request here
requests:
minAllowed:
memory: 1Gi
maxAllowed:
memory: 2Gi
policy:
updateMode: Auto
MultidimPodAutoscaler
를 만들려면 php-apache-autoscaler.yaml
매니페스트를 적용합니다.
kubectl apply -f php-apache-autoscaler.yaml
MultidimPodAutoscaler 보기
kubectl get
명령어를 사용하여 모든 MultidimPodAutoscaler
객체를 확인합니다.
kubectl get mpa
MultidimPodAutoscaler 삭제
kubectl delete
명령어를 사용하여 MultidimPodAutoscaler
객체를 삭제합니다.
kubectl delete -f php-apache-autoscaler.yaml
API 참조
다음 섹션에서는 MultidimPodAutoscaler
객체에 추가할 수 있는 필드에 대한 정보를 제공합니다.
apiVersion
v1beta1 autoscaling.gke.io
에 대한 모든 필드입니다.
MultidimPodAutoscaler
MultidimPodAutoscaler
는 과거 및 실시간 리소스 사용률에 따라 포드 리소스와 개수를 자동으로 관리하는 다차원 포드 자동 확장 처리의 구성입니다.
필드 | 유형 | 설명 |
---|---|---|
metadata |
ObjectMeta |
표준 객체 메타데이터 |
spec |
MultidimPodAutoscalerSpec |
원하는 다차원 포드 자동 확장 처리의 동작 |
status |
MultidimPodAutoscalerStatus |
가장 최근에 관찰된 다차원 포드 자동 확장 처리의 상태 |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec
은 자동 확장 처리의 동작을 정의하는 사양입니다.
필드 | 유형 | 설명 |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
확장 하위 리소스가 있는 확장할 대상 리소스를 가리키는 참조입니다. |
Goals |
*MultidimGoals |
다차원 포드 자동 확장 처리가 달성 및 유지하려는 목표입니다. |
Constraints |
*MultidimConstraints |
자동 확장의 제약조건을 설명합니다. 제약조건은 목표를 능가합니다. 제약조건이 목표를 차단한 경우 목표에 도달할 수 없습니다. 예를 들어 최대 복제본 수에 도달하면 복제본이 확장해야 할 경우에도 수직 확장이 방지됩니다. |
Policy |
*MultidimPolicy |
정책을 사용하면 추천이 적용되는 방식을 지정할 수 있습니다. |
MultidimGoals
MultidimGoals
는 다차원 포드 자동 확장 처리가 달성하려는 목표입니다.
필드 | 유형 | 설명 |
---|---|---|
Metrics |
[]MetricSpec |
측정항목 목록을 원하는 값과 함께 포함합니다. 다차원 포드 자동 확장 처리는 원하는 값과 가까이 유지하려고 합니다. |
MultidimConstraints
MultidimConstraints
는 자동 확장 제약조건을 설명합니다. 제약조건은 목표보다 우선 적용됩니다.
필드 | 유형 | 설명 |
---|---|---|
Global |
*GlobalConstraints |
자동 확장 애플리케이션에 전반적으로 적용되는 제약조건입니다. |
Pod |
*PodConstraints |
대상 애플리케이션의 단일 포드에 적용되는 제약조건입니다. |
ContainerControlledResources |
[]ResourceName |
자동 확장 처리에서 제어해야 하는 컨테이너 리소스입니다. 유일하게 지원되는 값은 memory 입니다. |
Container |
[]ContainerConstraints |
포드의 컨테이너에 적용되는 제약조건 |
ResourceConstraints
ResourceConstraints
는 컨테이너, 포드 또는 애플리케이션에 할당할 수 있는 최소 및 최대 리소스의 양을 정의합니다.
필드 | 유형 | 설명 |
---|---|---|
MinAllowed |
ResourceList |
할당 가능한 최소 리소스 양입니다. 입력하지 않으면 0이 사용됩니다. |
MaxAllowed |
ResourceList |
할당 가능한 최대 리소스 양입니다. 이 속성이 지정되지 않은 경우 최대 리소스 수에 제한이 없습니다. |
GlobalConstraints
GlobalConstraints
는 애플리케이션에 적용되는 제약조건을 모두 정의합니다. 이러한 제약조건에는 복제본 수나 총 리소스 양이 포함됩니다.
필드 | 유형 | 설명 |
---|---|---|
MinReplicas |
*Int32 |
애플리케이션에 포함될 수 있는 최소 복제본 수입니다. 입력하지 않으면 1이 사용됩니다. |
MaxReplicas |
*Int32 |
애플리케이션에 포함될 수 있는 최대 복제본 수입니다. 이 속성이 지정되지 않은 경우 최대 복제본 수에 제한이 없습니다. |
Requests |
*ResourceConstraints |
애플리케이션이 요청할 수 있는 최소 및 최대 리소스 양입니다(모든 포드 합계). |
PodConstraints
PodConstraints
는 단일 포드에서 요청할 수 있는 최소 및 최대 리소스 양(포드에 속한 모든 컨테이너에서 합산됨)을 정의합니다.
필드 | 유형 | 설명 |
---|---|---|
Requests |
*ResourceConstraints |
단일 포드에서 요청할 수 있는 최소 및 최대 리소스 양입니다(포드에 속한 모든 컨테이너에서 합산됨). |
ContainerConstraints
ContainerConstraints
는 포드의 컨테이너에 적용되는 제약조건입니다.
필드 | 유형 | 설명 |
---|---|---|
Name |
String |
제약조건이 지정된 컨테이너의 이름입니다. * 를 사용하여 포드의 모든 컨테이너에 대한 제약조건을 지정할 수도 있습니다. |
Requests |
*ResourceConstraints |
지정된 컨테이너가 요청할 수 있는 최소 및 최대 리소스 양입니다. |
UpdateMode
UpdateMode
를 사용하여 계산된 권장사항을 적용하는 방법을 제어할 수 있습니다.
필드 | 유형 | 설명 |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
AutoUpdate는 모든 자동 확장 처리 권장사항이 언제든지 적용될 수 있음을 의미합니다. |
AutoUpdates |
UpdateMode = "Off" |
AutoUpdates는 자동 확장 처리 권장사항이 전혀 적용되지 않음을 의미합니다. |
MultidimPolicy
필드 | 유형 | 설명 |
---|---|---|
Update |
UpdateMode |
권장사항을 적용하는 방법을 정의합니다. 값이 비어 있으면 검증에 실패합니다. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
는 자동 확장 처리의 런타임 상태를 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
ObservedGeneration |
*Int64 |
이 자동 확장 처리에서 관찰된 최신 세대입니다. |
RecommendedPodResources |
*RecommendedPodResources |
제어된 포드에 대해 자동 확장 처리에서 제안된 가장 최근에 계산한 리소스 사용량입니다. |
CurrentReplicas |
Int32 |
CurrentReplicas 는 이 자동 확장 처리에서 관리하고 자동 확장 처리에서 마지막으로 확인한 포드의 현재 복제본 수입니다. |
DesiredReplicas |
Int32 |
DesiredReplicas 는 이 자동 확장 처리에서 관리하고 자동 확장 처리에서 마지막으로 계산된 포드의 원하는 복제본 수입니다. |
CurrentMetrics |
[]autoscaling.MetricStatus |
이 자동 확장 처리에서 사용하는 측정항목의 마지막 읽기 상태입니다. |
Conditions |
[]metav1.Condition |
Conditions 는 자동 확장 처리에서 대상을 확장하는 데 필요한 조건의 집합이며 이러한 조건이 충족되는지 여부를 나타냅니다. |
다음 단계
- 수평형 포드 자동 확장 구성 자세히 알아보기
- 수직형 포드 자동 확장 구성 자세히 알아보기