다차원 포드 자동 확장 구성


다차원 포드 자동 확장을 클러스터를 확장하기 위해 단일 방법을 택할 필요가 없습니다. 다중 포드 자동 확장을 사용하면 CPU 기반 수평 확장 및 메모리 기반 수직 확장을 동시에 사용할 수 있습니다.

MultidimPodAutoscaler 객체는 각 복제본의 평균 CPU 사용률이 대상 사용률과 일치하도록 메모리 요청을 수정하고 복제본을 추가합니다.

기본 요건

다차원적 포드 자동 확장 사용

이 예시에서는 배포 및 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" AutoUpdate는 자동 확장 처리 권장사항이 전혀 적용되지 않는다는 것을 의미합니다.

MultidimPolicy

필드 유형 설명
Update UpdateMode 권장사항을 적용하는 방법을 정의합니다. 값이 비어 있으면 검증에 실패합니다.

MultidimPodAutoscalerStatus

MultidimPodAutoscalerStatus는 자동 확장 처리의 런타임 상태를 설명합니다.

필드 유형 설명
ObservedGeneration *Int64 이 자동 확장 처리에서 관찰한 가장 최근 세대입니다.
RecommendedPodResources *RecommendedPodResources 제어된 포드에 대해 자동 확장 처리에서 제안된 가장 최근에 계산한 리소스 사용량입니다.
CurrentReplicas Int32 CurrentReplicas는 이 자동 확장 처리에서 관리하고 자동 확장 처리에서 마지막으로 확인한 포드의 현재 복제본 수입니다.
DesiredReplicas Int32 DesiredReplicas는 이 자동 확장 처리에서 관리하고 자동 확장 처리에서 마지막으로 계산된 포드의 원하는 복제본 수입니다.
CurrentMetrics []autoscaling.MetricStatus 이 자동 확장 처리에서 사용하는 측정항목의 마지막 읽기 상태입니다.
Conditions []metav1.Condition Conditions는 자동 확장 처리에서 대상을 확장하는 데 필요한 조건의 집합이며 이러한 조건이 충족되는지 여부를 나타냅니다.

다음 단계