25.4. 자동 스케일링
수평 Pod 자동 스케일러를 생성하여 실행할 최소 및 최대 Pod 수와 Pod에서 목표로 하는 CPU 사용률 또는 메모리 사용률 을 지정할 수 있습니다.
수평 Pod 자동 스케일러가 생성되면 Pod의 지표에 대해 EgressIP을 쿼리하기 시작합니다. RuntimeClass가 초기 메트릭을 가져오기 전에 1~2분이 걸릴 수 있습니다.
EgressIP에서 메트릭을 사용할 수 있게 되면 수평 Pod 자동 스케일러는 현재 지표 사용률과 원하는 메트릭 사용률의 비율을 계산하고 그에 따라 확장 또는 축소합니다. 확장은 일정한 간격으로 수행되지만 지표가 RuntimeClass로 전환되기 전에 1~2분이 걸릴 수 있습니다.
복제 컨트롤러의 경우 이러한 스케일링은 복제 컨트롤러의 복제본과 직접적으로 일치합니다. 배포 구성의 경우 스케일링은 배포 구성의 복제본 수와 직접적으로 일치합니다. 자동 스케일링은 Complete
단계에서 최신 배포에만 적용됩니다.
OpenShift Container Platform은 리소스를 자동으로 차지하여 시작하는 동안과 같이 리소스가 급증하는 동안 불필요한 자동 스케일링을 방지합니다. unready
상태의 Pod는 확장 시 CPU 사용량이 0
이고, 축소 시에는 자동 스케일러에서 Pod를 무시합니다. 알려진 메트릭이 없는 Pod는 확장 시 CPU 사용량이 0%
이고, 축소 시에는 100%
입니다. 이를 통해 HPA를 결정하는 동안 안정성이 향상됩니다. 이 기능을 사용하려면 준비 상태 점검을 구성하여 새 Pod를 사용할 준비가 되었는지 확인해야 합니다.
25.4.1. CPU 사용률 자동 스케일링
CPU 사용률을 자동 스케일링하는 경우 oc autoscale
명령을 사용하여 언제든지 실행하려는 최대 Pod 수와 Pod에서 목표로 하는 평균 CPU 사용률을 지정할 수 있습니다. 선택적으로 최소 Pod 수를 지정할 수 있습니다. 그러지 않으면 Pod에 OpenShift Container Platform 서버의 기본값이 제공됩니다.
예를 들면 다음과 같습니다.
$ oc autoscale dc/frontend --max 10 --cpu-percent=80 deploymentconfig "frontend" autoscaled
예제 명령은 다음 정의를 사용하여 기존 DeploymentConfig에 대한 수평 Pod 자동 스케일러를 생성합니다.
수평 Pod Autoscaler 오브젝트 정의
apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: frontend 1 spec: scaleTargetRef: apiVersion: apps.openshift.io/v1 2 kind: DeploymentConfig 3 name: frontend 4 subresource: scale minReplicas: 1 5 maxReplicas: 10 6 targetCPUUtilizationPercentage: 80 7
- 1
- 이 수평 Pod 자동 스케일러 오브젝트의 이름입니다.
- 2
- 스케일링할 오브젝트의 API 버전입니다.
-
ReplicationController의 경우
v1
을 사용합니다. -
DeploymentConfig의 경우
apps.openshift.io/v1
을 사용합니다.
-
ReplicationController의 경우
- 3
ReplicationController
또는DeploymentConfig
중 스케일링할 오브젝트의 종류입니다.- 4
- 스케일링할 기존 오브젝트의 이름입니다.
- 5
- 축소 시 최소 복제본 수입니다. 기본값은
1
입니다. - 6
- 확장할 때 최대 복제본 수입니다.
- 7
- 각 Pod에서 사용해야 하는 요청된 CPU의 백분율입니다.
또는 oc autoscale
명령은 수평 Pod 자동 스케일러의 v2beta1
버전을 사용할 때 다음 정의를 사용하여 수평 Pod 자동 스케일러를 생성합니다.
apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hpa-resource-metrics-cpu 1 spec: scaleTargetRef: apiVersion: v1 2 kind: ReplicationController 3 name: hello-hpa-cpu 4 minReplicas: 1 5 maxReplicas: 10 6 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 50 7
- 1
- 이 수평 Pod 자동 스케일러 오브젝트의 이름입니다.
- 2
- 스케일링할 오브젝트의 API 버전입니다.
-
ReplicationController의 경우
v1
을 사용합니다. -
DeploymentConfig의 경우
apps.openshift.io/v1
을 사용합니다.
-
ReplicationController의 경우
- 3
ReplicationController
또는DeploymentConfig
중 스케일링할 오브젝트의 종류입니다.- 4
- 스케일링할 기존 오브젝트의 이름입니다.
- 5
- 축소 시 최소 복제본 수입니다. 기본값은
1
입니다. - 6
- 확장할 때 최대 복제본 수입니다.
- 7
- 각 포드에서 사용해야 하는 요청된 CPU의 평균 백분율입니다.