2.4. 수평 Pod 자동 스케일러를 사용하여 Pod 자동 스케일링
개발자는 HPA(수평 Pod 자동 스케일러)를 사용하여 해당 복제 컨트롤러 또는 배포 구성에 속하는 Pod에서 수집한 메트릭을 기반으로 OpenShift Container Platform에서 복제 컨트롤러 또는 배포 구성의 규모를 자동으로 늘리거나 줄이는 방법을 지정할 수 있습니다. 모든 배포, 배포 구성, 복제 세트, 복제 컨트롤러 또는 상태 저장 세트에 대해 HPA를 생성할 수 있습니다.
사용자 지정 메트릭을 기반으로 Pod 크기를 조정하는 방법에 대한 자세한 내용은 사용자 지정 메트릭을 기반으로 Pod를 자동으로 크기 조정을 참조하세요.
다른 객체가 제공하는 특정 기능이나 동작이 필요하지 않은 한, 배포
객체나 ReplicaSet
객체를 사용하는 것이 좋습니다. 이러한 개체에 대한 자세한 내용은 배포 이해를 참조하세요.
2.4.1. 수평 Pod 자동 스케일러 이해 링크 복사링크가 클립보드에 복사되었습니다!
수평 Pod 자동 스케일러를 생성하여 실행하려는 최소 및 최대 Pod 수와 Pod에서 목표로 하는 CPU 사용률 또는 메모리 사용률을 지정할 수 있습니다.
수평 Pod 자동 스케일러를 생성하면 OpenShift Container Platform에서 Pod의 CPU 및/또는 메모리 리소스 메트릭을 쿼리합니다. 이러한 메트릭을 사용할 수 있는 경우 수평 Pod 자동 스케일러에서 현재 메트릭 사용률과 원하는 메트릭 사용률의 비율을 계산하고 그에 따라 확장 또는 축소합니다. 쿼리 및 스케일링은 정기적으로 수행되지만 메트릭을 사용할 수 있을 때까지 1~2분이 걸릴 수 있습니다.
복제 컨트롤러의 경우 이러한 스케일링은 복제 컨트롤러의 복제본과 직접적으로 일치합니다. 배포 구성의 경우 스케일링은 배포 구성의 복제본 수와 직접적으로 일치합니다. 자동 스케일링은 Complete
단계에서 최신 배포에만 적용됩니다.
OpenShift Container Platform은 리소스를 자동으로 차지하여 시작하는 동안과 같이 리소스가 급증하는 동안 불필요한 자동 스케일링을 방지합니다. unready
상태의 Pod는 확장 시 CPU 사용량이 0
이고, 축소 시에는 자동 스케일러에서 Pod를 무시합니다. 알려진 메트릭이 없는 Pod는 확장 시 CPU 사용량이 0%
이고, 축소 시에는 100%
입니다. 이를 통해 HPA를 결정하는 동안 안정성이 향상됩니다. 이 기능을 사용하려면 준비 상태 점검을 구성하여 새 Pod를 사용할 준비가 되었는지 확인해야 합니다.
수평 Pod 자동 스케일러를 사용하려면 클러스터 관리자가 클러스터 메트릭을 올바르게 구성해야 합니다.
2.4.1.1. 지원되는 메트릭 링크 복사링크가 클립보드에 복사되었습니다!
수평 Pod 자동 스케일러에서는 다음 메트릭을 지원합니다.
메트릭 | 설명 | API 버전 |
---|---|---|
CPU 사용 | 사용되는 CPU 코어의 수입니다. Pod에서 요청하는 CPU의 백분율을 계산하는 데 사용할 수 있습니다. |
|
메모리 사용률 | 사용되는 메모리의 양입니다. Pod에서 요청하는 메모리의 백분율을 계산하는 데 사용할 수 있습니다. |
|
메모리 기반 자동 스케일링의 경우 메모리 사용량이 복제본 수에 비례하여 증가 및 감소해야 합니다. 평균적으로 다음과 같습니다.
- 복제본 수가 증가하면 Pod당 메모리(작업 집합) 사용량이 전반적으로 감소해야 합니다.
- 복제본 수가 감소하면 Pod별 메모리 사용량이 전반적으로 증가해야 합니다.
메모리 기반 자동 스케일링을 사용하기 전에 OpenShift Container Platform 웹 콘솔을 사용하여 애플리케이션의 메모리 동작을 확인하고 애플리케이션이 해당 요구 사항을 충족하는지 확인하십시오.
다음 예제에서는 hello-node
배포
객체에 대한 자동 크기 조정을 보여줍니다. 초기 배포에는 Pod 3개가 필요합니다. HPA 객체는 최소값을 5로 늘립니다. 포드의 CPU 사용량이 75%에 도달하면 포드가 7개로 늘어납니다.
oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75
$ oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75
출력 예
horizontalpodautoscaler.autoscaling/hello-node autoscaled
horizontalpodautoscaler.autoscaling/hello-node autoscaled
minReplicas를
3으로 설정하여 hello-node
배포 개체에 대한 HPA를 생성하는 샘플 YAML
HPA를 만든 후 다음 명령을 실행하여 배포의 새로운 상태를 볼 수 있습니다.
oc get deployment hello-node
$ oc get deployment hello-node
이제 배포에 Pod 5개가 있습니다.
출력 예
NAME REVISION DESIRED CURRENT TRIGGERED BY hello-node 1 5 5 config
NAME REVISION DESIRED CURRENT TRIGGERED BY
hello-node 1 5 5 config
2.4.2. HPA는 어떻게 작동하나요? 링크 복사링크가 클립보드에 복사되었습니다!
수평 포드 자동 확장기(HPA)는 포드 자동 확장의 개념을 확장합니다. HPA를 사용하면 부하 분산 노드 그룹을 만들고 관리할 수 있습니다. HPA는 주어진 CPU 또는 메모리 임계값을 초과하면 포드 수를 자동으로 늘리거나 줄입니다.
그림 2.1. HPA의 고수준 워크플로
HPA는 Kubernetes 자동 확장 API 그룹의 API 리소스입니다. 자동 확장 기능은 동기화 기간을 기본적으로 15초로 설정하는 제어 루프로 작동합니다. 이 기간 동안 컨트롤러 관리자는 HPA의 YAML 파일에 정의된 내용에 대해 CPU, 메모리 사용률 또는 둘 다를 쿼리합니다. 컨트롤러 관리자는 HPA의 대상이 되는 각 포드에 대한 CPU나 메모리와 같은 포드별 리소스 메트릭에 대한 리소스 메트릭 API에서 활용도 메트릭을 가져옵니다.
활용도 값 목표가 설정된 경우, 컨트롤러는 각 포드의 컨테이너에 대한 동등한 리소스 요청의 백분율로 활용도 값을 계산합니다. 그런 다음 컨트롤러는 대상 포드 전체의 활용도 평균을 구하고 원하는 복제본 수를 조정하는 데 사용되는 비율을 생성합니다. HPA는 메트릭 서버에서 제공하는 metrics.k8s.io
에서 메트릭을 가져오도록 구성되어 있습니다. 메트릭 평가의 동적 특성으로 인해 복제본 그룹의 크기 조정 중에 복제본 수가 변동될 수 있습니다.
HPA를 구현하려면 대상 포드 모두의 컨테이너에 리소스 요청이 설정되어 있어야 합니다.
2.4.3. 요청 및 제한에 관하여 링크 복사링크가 클립보드에 복사되었습니다!
스케줄러는 포드 내 컨테이너에 대해 지정한 리소스 요청을 사용하여 포드를 어느 노드에 배치할지 결정합니다. kubelet은 컨테이너에 대해 지정한 리소스 제한을 적용하여 컨테이너가 지정된 제한 이상을 사용하지 못하도록 합니다. 또한 kubelet은 해당 컨테이너가 사용할 시스템 리소스의 요청량을 특별히 예약합니다.
리소스 메트릭을 어떻게 사용하나요?
Pod 사양에서는 CPU, 메모리 등의 리소스 요청을 지정해야 합니다. HPA는 이 사양을 사용하여 리소스 활용도를 확인한 다음 대상을 확대하거나 축소합니다.
예를 들어, HPA 객체는 다음과 같은 메트릭 소스를 사용합니다.
이 예에서 HPA는 확장 대상에서 포드의 평균 활용도를 60%로 유지합니다. 활용도는 현재 리소스 사용량과 포드의 요청된 리소스 간의 비율입니다.
2.4.4. 모범 사례 링크 복사링크가 클립보드에 복사되었습니다!
모든 포드에는 리소스 요청이 구성되어 있어야 합니다.
HPA는 OpenShift Container Platform 클러스터의 포드에서 관찰된 CPU 또는 메모리 사용률 값을 기반으로 확장 결정을 내립니다. 활용도 값은 각 포드의 리소스 요청에 대한 백분율로 계산됩니다. 리소스 요청 값이 누락되면 HPA의 최적 성능에 영향을 미칠 수 있습니다.
쿨다운 기간 구성
수평적 포드 자동 확장 중에는 시간 간격 없이 이벤트가 빠르게 확장될 수 있습니다. 복제본 변동이 잦아지는 것을 방지하기 위해 쿨다운 기간을 구성합니다. stabilizationWindowSeconds
필드를 구성하여 쿨다운 기간을 지정할 수 있습니다. 안정화 창은 확장에 사용되는 지표가 계속 변동할 때 복제본 수의 변동을 제한하는 데 사용됩니다. 자동 확장 알고리즘은 이 창을 사용하여 이전의 원하는 상태를 추론하고 작업 부하 규모에 대한 원치 않는 변경을 방지합니다.
예를 들어, scaleDown
필드에 안정화 창이 지정됩니다.
behavior: scaleDown: stabilizationWindowSeconds: 300
behavior:
scaleDown:
stabilizationWindowSeconds: 300
위의 예에서는 지난 5분 동안의 모든 원하는 상태가 고려됩니다. 이는 롤링 최대값에 근접하며, 스케일링 알고리즘이 포드를 자주 제거한 후 몇 분 후에 동등한 포드를 다시 생성하는 것을 방지합니다.
2.4.4.1. 스케일링 정책 링크 복사링크가 클립보드에 복사되었습니다!
자동 확장/v2
API를 사용하면 수평적 Pod 자동 확장기에 확장 정책을 추가할 수 있습니다. 스케일링 정책은 OpenShift Container Platform HPA(수평 Pod 자동 스케일러)에서 Pod를 스케일링하는 방법을 제어합니다. 스케일링 정책을 사용하면 지정된 기간에 스케일링할 특정 수 또는 특정 백분율을 설정하여 HPA에서 Pod를 확장 또는 축소하는 비율을 제한할 수 있습니다. 또한 메트릭이 계속 변동하는 경우 이전에 계산한 원하는 상태를 사용하여 스케일링을 제어하는 안정화 기간을 정의할 수 있습니다. 동일한 스케일링 방향(확장 또는 축소)에 대해 여러 정책을 생성하여 변경 정도에 따라 사용할 정책을 결정할 수 있습니다. 반복 시간을 지정하여 스케일링을 제한할 수도 있습니다. HPA는 반복 중 Pod를 스케일링한 다음 필요에 따라 추가 반복에서 스케일링을 수행합니다.
스케일링 정책이 포함된 HPA 오브젝트 샘플
- 1
- 스케일링 정책의 방향, 즉
scaleDown
또는scaleUp
을 지정합니다. 이 예제에서는 축소 정책을 생성합니다. - 2
- 스케일링 정책을 정의합니다.
- 3
- 정책이 각 반복에서 특정 Pod 수 또는 Pod 백분율로 스케일링하는지의 여부를 결정합니다. 기본값은
pods
입니다. - 4
- 각 반복 중에 포드 수 또는 포드 비율 등 확장 정도를 제한합니다. Pod 수에 따라 축소할 기본값은 없습니다.
- 5
- 스케일링 반복의 길이를 결정합니다. 기본값은
15
초입니다. - 6
- 백분율로 된 축소 기본값은 100%입니다.
- 7
- 여러 정책이 정의된 경우 먼저 사용할 정책을 결정합니다. 가장 많은 변경을 허용하는 정책을 사용하려면
Max
를 지정하고, 최소 변경을 허용하는 정책을 사용하려면Min
을 지정합니다. HPA에서 해당 정책 방향으로 스케일링하지 않도록 하려면Disabled
를 지정합니다. 기본값은Max
입니다. - 8
- HPA에서 원하는 상태를 검토해야 하는 기간을 결정합니다. 기본값은
0
입니다. - 9
- 이 예제에서는 확장 정책을 생성합니다.
- 10
- 확장 가능 범위를 포드 수로 제한합니다. Pod 수 확장 기본값은 4%입니다.
- 11
- 포드의 비율로 확장 범위를 제한합니다. 백분율로 된 확장 기본값은 100%입니다.
축소 정책의 예
이 예제에서 Pod 수가 40개를 초과하면 selectPolicy
에서 요구하는 대로 해당 정책으로 인해 상당한 변경이 발생하므로 축소에 백분율 기반 정책이 사용됩니다.
Pod 복제본이 80개 있는 경우 HPA는 첫 번째 반복에서 1분(periodSeconds: 60
)에 걸쳐 (type: Percent
및 value: 10
매개변수에 따라) Pod 80개 중 10%에 해당하는 8개의 Pod를 줄입니다. 다음 반복에서는 Pod가 72개입니다. HPA는 나머지 Pod의 10%를 계산한 7.2개를 8개로 올림하여 Pod 8개를 축소합니다. 이후 반복할 때마다 나머지 Pod 수에 따라 스케일링할 Pod 수가 다시 계산됩니다. Pod 수가 40개 미만으로 줄어들면 Pod 기반 숫자가 백분율 기반 숫자보다 크기 때문에 Pod 기반 정책이 적용됩니다. HPA는 20개의 복제본(minReplicas
)이 남아 있을 때까지 30초(periodSeconds: 30
)에 걸쳐 한 번에 Pod를 4개씩 줄입니다(type: Pods
및 value: 4
).
selectPolicy: Disabled
매개변수를 사용하면 HPA에서 Pod를 확장하지 못합니다. 필요한 경우 복제본 세트 또는 배포 세트의 복제본 수를 조정하여 수동으로 확장할 수 있습니다.
설정되어 있는 경우 oc edit
명령을 사용하여 스케일링 정책을 확인할 수 있습니다.
oc edit hpa hpa-resource-metrics-memory
$ oc edit hpa hpa-resource-metrics-memory
출력 예
2.4.5. 웹 콘솔을 사용하여 수평 Pod 자동 스케일러 생성 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔에서 배포
또는 배포 구성
개체에서 실행하려는 최소 및 최대 포드 수를 지정하는 수평 포드 자동 확장기(HPA)를 만들 수 있습니다. 또한 포드가 목표로 삼아야 할 CPU 또는 메모리 사용량을 정의할 수도 있습니다.
HPA는 Operator 지원 서비스, Knative 서비스 또는 Helm 차트의 일부인 배포에 추가할 수 없습니다.
프로세스
웹 콘솔에서 HPA를 생성하려면 다음을 수행합니다.
- 토폴로지 보기에서 노드를 클릭하여 측면 창을 표시합니다.
작업 드롭다운 목록에서 HorizontalPodAutoscaler 추가 를 선택하여 HorizontalPodAutoscaler 추가 양식을 엽니다.
그림 2.2. Add HorizontalPodAutoscaler
HorizontalPodAutoscaler 추가 양식에서 이름, 최소 및 최대 Pod 제한, CPU 및 메모리 사용량을 정의하고 저장을 클릭합니다.
참고CPU 및 메모리 사용량에 대한 값이 없는 경우 경고가 표시됩니다.
웹 콘솔에서 HPA를 편집하려면 다음을 수행합니다.
- 토폴로지 보기에서 노드를 클릭하여 측면 창을 표시합니다.
- 작업 드롭다운 목록에서 HorizontalPodAutoscaler 편집을 선택하여 Horizontal Pod Autoscaler 편집 양식을 엽니다.
- Horizontal Pod Autoscaler 편집 양식에서 최소 및 최대 Pod 제한과 CPU 및 메모리 사용량을 편집한 다음 저장을 클릭합니다.
웹 콘솔에서 수평 Pod 자동 스케일러를 생성하거나 편집하는 동안 양식 보기에서 YAML 보기로 전환할 수 있습니다.
웹 콘솔에서 HPA를 제거하려면 다음을 수행합니다.
- 토폴로지 보기에서 노드를 클릭하여 측면 창을 표시합니다.
- 작업 드롭다운 목록에서 HorizontalPodAutoscaler 제거를 선택합니다.
- 확인 팝업 창에서 제거를 클릭하여 HPA를 제거합니다.
2.4.6. CLI를 사용하여 CPU 사용률에 대한 수평 Pod 자동 스케일러 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform CLI를 사용하면 기존 Deployment
, DeploymentConfig
, ReplicaSet
, ReplicationController
또는 StatefulSet
객체를 자동으로 확장하는 수평적 Pod 자동 확장기(HPA)를 만들 수 있습니다. HPA는 사용자가 지정한 CPU 사용량을 유지하기 위해 해당 객체와 연관된 포드의 크기를 조정합니다.
다른 객체가 제공하는 특정 기능이나 동작이 필요하지 않은 한, 배포
객체나 ReplicaSet
객체를 사용하는 것이 좋습니다.
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
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
출력 예
프로세스
CPU 사용률에 대한 수평 Pod 자동 스케일러를 생성하려면 다음을 수행합니다.
다음 중 하나를 수행하세요.
CPU 사용률 백분율에 따라 크기를 조정하려면 기존 객체에 대한
HorizontalPodAutoscaler
객체를 만듭니다.oc autoscale <object_type>/<name> \ --min <number> \ --max <number> \ --cpu-percent=<percent>
$ oc autoscale <object_type>/<name> \
1 --min <number> \
2 --max <number> \
3 --cpu-percent=<percent>
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 자동 크기 조정을 수행할 객체의 유형과 이름을 지정합니다. 해당 객체는 존재해야 하며,
Deployment
,DeploymentConfig
/dc
,ReplicaSet
/rs
,ReplicationController
/rc
또는StatefulSet
이어야 합니다. - 2
- 필요한 경우 축소 시 최소 복제본 수를 지정합니다.
- 3
- 확장 시 최대 복제본 수를 지정합니다.
- 4
- 요청된 CPU의 백분율로 표시되는 모든 Pod의 목표 평균 CPU 사용량을 지정합니다. 지정하지 않거나 음수가 아닌 경우 기본 자동 스케일링 정책이 사용됩니다.
예를 들어, 다음 명령은
hello-node
배포 개체에 대한 자동 크기 조정을 보여줍니다. 초기 배포에는 Pod 3개가 필요합니다. HPA 객체는 최소값을 5로 늘립니다. 포드의 CPU 사용량이 75%에 도달하면 포드가 7개로 늘어납니다.oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75
$ oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 CPU 값에 맞게 확장하려면 기존 개체에 대해 다음과 유사한 YAML 파일을 만듭니다.
다음과 유사한 YAML 파일을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
자동 확장/v2
API를 사용하세요.- 2
- 이 수평 Pod 자동 스케일러 오브젝트의 이름을 지정합니다.
- 3
- 스케일링할 오브젝트의 API 버전을 지정합니다.
-
배포
,ReplicaSet
,Statefulset
개체의 경우apps/v1을
사용합니다. -
ReplicationController
의 경우v1을
사용합니다. -
DeploymentConfig
의 경우apps.openshift.io/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
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
수평 Pod 자동 스케일러가 생성되었는지 확인합니다.
oc get hpa cpu-autoscale
$ oc get hpa cpu-autoscale
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.7. CLI를 사용하여 메모리 사용률에 대한 수평 Pod 자동 스케일러 오브젝트 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform CLI를 사용하면 기존 Deployment
, DeploymentConfig
, ReplicaSet
, ReplicationController
또는 StatefulSet
객체를 자동으로 확장하는 수평적 Pod 자동 확장기(HPA)를 만들 수 있습니다. HPA는 사용자가 지정한 평균 메모리 사용량(직접적인 값 또는 요청된 메모리의 백분율)을 유지하기 위해 해당 객체와 연관된 포드의 크기를 조정합니다.
다른 객체가 제공하는 특정 기능이나 동작이 필요하지 않은 한, 배포
객체나 ReplicaSet
객체를 사용하는 것이 좋습니다.
HPA는 최소 및 최대 개수 사이에서 복제본 수를 늘리거나 줄여 전체 Pod에서 지정된 메모리 사용률을 유지합니다.
메모리 사용률의 경우 최소 및 최대 Pod 수와 Pod에서 목표로 해야 하는 평균 메모리 사용률을 지정할 수 있습니다. 최솟값을 지정하지 않으면 Pod에 OpenShift Container Platform 서버의 기본값이 지정됩니다.
사전 요구 사항
수평 Pod 자동 스케일러를 사용하려면 클러스터 관리자가 클러스터 메트릭을 올바르게 구성해야 합니다. oc describe PodMetrics <pod-name>
명령을 사용하여 메트릭이 구성되어 있는지 확인할 수 있습니다. 메트릭이 구성된 경우 출력이 다음과 유사하게 표시되고 Usage
에 Cpu
및 Memory
가 표시됩니다.
oc describe PodMetrics openshift-kube-scheduler-ip-10-0-129-223.compute.internal -n openshift-kube-scheduler
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-129-223.compute.internal -n openshift-kube-scheduler
출력 예
프로세스
메모리 사용률에 대한 수평 Pod 자동 스케일러를 생성하려면 다음을 수행합니다.
다음 중 하나에 대한 YAML 파일을 생성합니다.
특정 메모리 값에 맞게 크기를 조정하려면 기존 객체에 대해 다음과 유사한
HorizontalPodAutoscaler
객체를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
자동 확장/v2
API를 사용하세요.- 2
- 이 수평 Pod 자동 스케일러 오브젝트의 이름을 지정합니다.
- 3
- 스케일링할 오브젝트의 API 버전을 지정합니다.
-
Deployment
,ReplicaSet
또는Statefulset
개체의 경우apps/v1을
사용합니다. -
ReplicationController
의 경우v1을
사용합니다. -
DeploymentConfig
의 경우apps.openshift.io/v1을
사용하세요.
-
- 4
- 객체의 유형을 지정합니다. 객체는
Deployment
,DeploymentConfig
,ReplicaSet
,ReplicationController
또는StatefulSet
이어야 합니다. - 5
- 스케일링할 오브젝트의 이름을 지정합니다. 오브젝트가 있어야 합니다.
- 6
- 축소 시 최소 복제본 수를 지정합니다.
- 7
- 확장 시 최대 복제본 수를 지정합니다.
- 8
- 메모리 사용률에
metrics
매개변수를 사용합니다. - 9
- 메모리 사용률에 대한
메모리
를 지정합니다. - 10
- 유형을
AverageValue
로 설정합니다. - 11
averageValue
및 특정 메모리 값을 지정합니다.- 12
- 선택 사항: 스케일링 정책을 지정하여 확장 또는 축소비율을 제어합니다.
백분율에 맞게 크기를 조정하려면 기존 객체에 대해 다음과 유사한
HorizontalPodAutoscaler
객체를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
자동 확장/v2
API를 사용하세요.- 2
- 이 수평 Pod 자동 스케일러 오브젝트의 이름을 지정합니다.
- 3
- 스케일링할 오브젝트의 API 버전을 지정합니다.
-
ReplicationController의 경우
v1을
사용하세요. -
배포 구성의 경우
apps.openshift.io/v1을
사용하세요. -
배포, ReplicaSet, Statefulset 개체의 경우
apps/v1을
사용합니다.
-
ReplicationController의 경우
- 4
- 객체의 유형을 지정합니다. 객체는
Deployment
,DeploymentConfig
,ReplicaSet
,ReplicationController
또는StatefulSet
이어야 합니다. - 5
- 스케일링할 오브젝트의 이름을 지정합니다. 오브젝트가 있어야 합니다.
- 6
- 축소 시 최소 복제본 수를 지정합니다.
- 7
- 확장 시 최대 복제본 수를 지정합니다.
- 8
- 메모리 사용률에
metrics
매개변수를 사용합니다. - 9
- 메모리 사용률에 대한
메모리
를 지정합니다. - 10
Utilization
으로 설정합니다.- 11
averageUtilization
및 전체 Pod에 대한 대상 평균 메모리 사용률(요청 메모리의 백분율로 표시)을 지정합니다. 대상 Pod에 메모리 요청이 구성되어 있어야 합니다.- 12
- 선택 사항: 스케일링 정책을 지정하여 확장 또는 축소비율을 제어합니다.
수평 Pod 자동 스케일러를 생성합니다.
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다.
oc create -f hpa.yaml
$ oc create -f hpa.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created
horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 수평 Pod 자동 스케일러가 생성되었는지 확인합니다.
oc get hpa hpa-resource-metrics-memory
$ oc get hpa hpa-resource-metrics-memory
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-resource-metrics-memory Deployment/example 2441216/500Mi 1 10 1 20m
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-resource-metrics-memory Deployment/example 2441216/500Mi 1 10 1 20m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe hpa hpa-resource-metrics-memory
$ oc describe hpa hpa-resource-metrics-memory
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.8. CLI를 사용하여 수평 Pod 자동 스케일러 상태 조건 이해 링크 복사링크가 클립보드에 복사되었습니다!
일련의 상태 조건을 사용하여 HPA(수평 Pod 자동 스케일러)에서 스케일링할 수 있는지 그리고 HPA가 현재 제한되어 있는지의 여부를 결정할 수 있습니다.
HPA 상태 조건은 자동 확장 API v2
버전에서 사용할 수 있습니다.
HPA는 다음과 같은 상태 조건을 통해 응답합니다.
AbleToScale
상태는 HPA에서 메트릭을 가져오고 업데이트할 수 있는지의 여부 및 백오프 관련 상태로 스케일링을 방지할 수 있는지의 여부를 나타냅니다.-
True
조건은 스케일링이 허용되었음을 나타냅니다. -
False
조건은 지정된 이유로 스케일링이 허용되지 않음을 나타냅니다.
-
ScalingActive
조건은 HPA가 활성화되어 있고(예: 대상의 복제본 수가 0이 아님) 원하는 메트릭을 계산할 수 있는지의 여부를 나타냅니다.-
True
조건은 메트릭이 제대로 작동함을 나타냅니다. -
False
조건은 일반적으로 메트릭을 가져오는 데 문제가 있음을 나타냅니다.
-
ScalingLimited
조건은 원하는 스케일링이 수평 Pod 자동 스케일러의 최댓값 또는 최솟값으로 제한되었음을 나타냅니다.-
True
조건은 스케일링을 위해 최소 또는 최대 복제본 수를 늘리거나 줄여야 함을 나타냅니다. False
조건은 요청된 스케일링이 허용됨을 나타냅니다.oc describe hpa cm-test
$ oc describe hpa cm-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 수평 Pod 자동 스케일러의 상태 메시지입니다.
-
다음은 스케일링할 수 없는 Pod의 예입니다.
출력 예
다음은 스케일링에 필요한 메트릭을 가져올 수 없는 Pod의 예입니다.
출력 예
Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale
ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
다음은 요청된 자동 스케일링이 필요한 최솟값보다 적은 Pod의 예입니다.
출력 예
2.4.8.1. CLI를 사용하여 수평 Pod 자동 스케일러 상태 조건 보기 링크 복사링크가 클립보드에 복사되었습니다!
HPA(수평 Pod 자동 스케일러)를 통해 Pod에 설정된 상태 조건을 볼 수 있습니다.
수평적 포드 자동 확장기 상태 조건은 자동 확장 API v2
버전에서 사용할 수 있습니다.
사전 요구 사항
수평 Pod 자동 스케일러를 사용하려면 클러스터 관리자가 클러스터 메트릭을 올바르게 구성해야 합니다. oc describe PodMetrics <pod-name>
명령을 사용하여 메트릭이 구성되어 있는지 확인할 수 있습니다. 메트릭이 구성된 경우 출력이 다음과 유사하게 표시되고 Usage
에 Cpu
및 Memory
가 표시됩니다.
oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
출력 예
프로세스
Pod의 상태 조건을 보려면 Pod 이름과 함께 다음 명령을 사용합니다.
oc describe hpa <pod-name>
$ oc describe hpa <pod-name>
예를 들면 다음과 같습니다.
oc describe hpa cm-test
$ oc describe hpa cm-test
상태가 출력의 Conditions
필드에 나타납니다.
출력 예