2.4.3. CLI를 사용하여 CPU 사용률에 대한 수평 Pod 자동 스케일러 생성
기존 Deployment
,DeploymentConfig
,ReplicaSet
,ReplicationController
또는 StatefulSet
오브젝트에 HPA(수평 Pod 자동 스케일러)를 생성하여 지정하는 CPU 사용량을 유지하도록 해당 오브젝트와 연결된 Pod를 자동으로 스케일링할 수 있습니다.
HPA는 최소 및 최대 개수 사이에서 복제본 수를 늘리거나 줄여 전체 Pod에서 지정된 CPU 사용률을 유지합니다.
CPU 사용률을 자동 스케일링할 때는 oc autoscale
명령을 사용하여 언제든지 실행하려는 최소 및 최대 Pod 수와 Pod에서 목표로 하는 평균 CPU 사용률을 지정할 수 있습니다. 최솟값을 지정하지 않으면 Pod에 OpenShift Container Platform 서버의 기본값이 지정됩니다. 특정 CPU 값을 자동 스케일링하려면 대상 CPU 및 Pod 제한을 사용하여 HorizontalPodAutoscaler
오브젝트를 생성합니다.
사전 요구 사항
수평 Pod 자동 스케일러를 사용하려면 클러스터 관리자가 클러스터 메트릭을 올바르게 구성해야 합니다. oc describe PodMetrics <pod-name>
명령을 사용하여 메트릭이 구성되어 있는지 확인할 수 있습니다. 메트릭이 구성된 경우 출력이 다음과 유사하게 표시되고 Usage
에 Cpu
및 Memory
가 표시됩니다.
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
출력 예
Name: openshift-kube-scheduler-ip-10-0-135-131.ec2.internal Namespace: openshift-kube-scheduler Labels: <none> Annotations: <none> API Version: metrics.k8s.io/v1beta1 Containers: Name: wait-for-host-port Usage: Memory: 0 Name: scheduler Usage: Cpu: 8m Memory: 45440Ki Kind: PodMetrics Metadata: Creation Timestamp: 2019-05-23T18:47:56Z Self Link: /apis/metrics.k8s.io/v1beta1/namespaces/openshift-kube-scheduler/pods/openshift-kube-scheduler-ip-10-0-135-131.ec2.internal Timestamp: 2019-05-23T18:47:56Z Window: 1m0s Events: <none>
프로세스
CPU 사용률에 대한 수평 Pod 자동 스케일러를 생성하려면 다음을 수행합니다.
다음 중 하나를 수행합니다.
CPU 사용률 백분율에 따라 스케일링하려면 기존 오브젝트에 대한
HorizontalPodAutoscaler
오브젝트를 생성합니다.$ oc autoscale <object_type>/<name> \1 --min <number> \2 --max <number> \3 --cpu-percent=<percent> 4
예를 들어 다음 명령은
image-registry
DeploymentConfig
오브젝트에 대한 자동 스케일링을 보여줍니다. 초기 배포에는 Pod 3개가 필요합니다. HPA 오브젝트에서 해당 최솟값을 5개로 늘렸으며 Pod의 CPU 사용량이 75%에 도달하면 7개까지 늘립니다.$ oc autoscale dc/image-registry --min=5 --max=7 --cpu-percent=75
특정 CPU 값을 스케일링하려면 기존 오브젝트에 대해 다음과 유사한 YAML 파일을 생성합니다.
다음과 유사한 YAML 파일을 생성합니다.
apiVersion: autoscaling/v2beta2 1 kind: HorizontalPodAutoscaler metadata: name: cpu-autoscale 2 namespace: default spec: scaleTargetRef: apiVersion: v1 3 kind: ReplicaSet 4 name: example 5 minReplicas: 1 6 maxReplicas: 10 7 metrics: 8 - type: Resource resource: name: cpu 9 target: type: AverageValue 10 averageValue: 500m 11
- 1
autoscaling/v2beta2
API를 사용합니다.- 2
- 이 수평 Pod 자동 스케일러 오브젝트의 이름을 지정합니다.
- 3
- 스케일링할 오브젝트의 API 버전을 지정합니다.
-
ReplicationController
의 경우v1
을 사용합니다. -
deploymentConfig
의
경우apps.openshift.io/v1
을 사용합니다. -
Deployment
,ReplicaSet
,Statefulset
오브젝트의 경우apps/v1
을 사용합니다.
-
- 4
- 오브젝트 유형을 지정합니다. 오브젝트는
Deployment
,DeploymentConfig
/dc
,ReplicaSet
/rs
,ReplicationController
/rc
또는StatefulSet
이어야 합니다. - 5
- 스케일링할 오브젝트의 이름을 지정합니다. 오브젝트가 있어야 합니다.
- 6
- 축소 시 최소 복제본 수를 지정합니다.
- 7
- 확장 시 최대 복제본 수를 지정합니다.
- 8
- 메모리 사용률에
metrics
매개변수를 사용합니다. - 9
- CPU 사용률에
cpu
를 지정합니다. - 10
AverageValue
로 설정합니다.- 11
- 대상 CPU 값을 사용하여
averageValue
로 설정합니다.
수평 Pod 자동 스케일러를 생성합니다.
$ oc create -f <file-name>.yaml
수평 Pod 자동 스케일러가 생성되었는지 확인합니다.
$ oc get hpa cpu-autoscale
출력 예
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale ReplicationController/example 173m/500m 1 10 1 20m