7.2. 클러스터 자동 스케일러 구성
먼저 클러스터 자동 스케일러를 배포하여 OpenShift Container Platform 클러스터에서 리소스의 자동 스케일링을 관리합니다.
클러스터 자동 스케일러의 범위는 전체 클러스터에 설정되므로 클러스터에 대해 하나의 클러스터 자동 스케일러만 만들 수 있습니다.
7.2.1. 클러스터 자동 스케일러 리소스 정의
이 ClusterAutoscaler
리소스 정의는 클러스터 자동 스케일러의 매개 변수 및 샘플 값을 표시합니다.
apiVersion: "autoscaling.openshift.io/v1" kind: "ClusterAutoscaler" metadata: name: "default" spec: podPriorityThreshold: -10 1 resourceLimits: maxNodesTotal: 24 2 cores: min: 8 3 max: 128 4 memory: min: 4 5 max: 256 6 gpus: - type: <gpu_type> 7 min: 0 8 max: 16 9 logVerbosity: 4 10 scaleDown: 11 enabled: true 12 delayAfterAdd: 10m 13 delayAfterDelete: 5m 14 delayAfterFailure: 30s 15 unneededTime: 5m 16 utilizationThreshold: "0.4" 17
- 1
- 클러스터 자동 스케일러가 추가 노드를 배포하도록 하려면 pod가 초과해야하는 우선 순위를 지정합니다. 32 비트 정수 값을 입력합니다.
podPriorityThreshold
값은 각 pod에 할당한PriorityClass
의 값과 비교됩니다. - 2
- 배포할 최대 노드 수를 지정합니다. 이 값은 Autoscaler가 제어하는 머신뿐 만 아니라 클러스터에 배치 된 총 머신 수입니다. 이 값이 모든 컨트롤 플레인 및 컴퓨팅 머신과
MachineAutoscaler
리소스에 지정한 총 복제본 수에 대응할 수 있을 만큼 충분한 크기의 값인지 확인합니다. - 3
- 클러스터에 배포할 최소 코어 수를 지정합니다.
- 4
- 클러스터에 배포할 최대 코어 수를 지정합니다.
- 5
- 클러스터에서 최소 메모리 크기를 GiB 단위로 지정합니다.
- 6
- 클러스터에서 최대 메모리 크기를 GiB단위로 지정합니다.
- 7
- 선택 사항: GPU 지원 노드를 배포하도록 클러스터 자동 스케일러를 구성하려면 사용할 GPU
유형을
나타내는 유형 값을 지정합니다. 예를 들어nvidia-t4
를 사용하여 Nvidia T4 GPU를 표시하거나 A10G GPU의 경우nvidia-a10g
를 사용할 수 있습니다.참고유형 값은 해당 유형의
GPU 사용 노드를 관리하는 머신 세트의spec.template.spec.metadata.labels[cluster-api/accelerator]
레이블 값과 일치해야 합니다. 이 값을 머신 세트의 레이블로 사용하므로 영숫자 문자-
,_
.
로 구성되어야 하며 영숫자 문자로 시작하고 끝나야 합니다. - 8
- 클러스터에 배포할 지정된 유형의 최소 GPU 수를 지정합니다.
- 9
- 클러스터에 배포할 지정된 유형의 최대 GPU 수를 지정합니다.
- 10
- 로깅 세부 정보 표시 수준을
0
에서10
사이로 지정합니다. 지침을 위해 다음과 같은 로그 수준 임계값이 제공됩니다.-
1
: (기본값) 변경 사항에 대한 기본 정보입니다. -
4
: 일반적인 문제 해결을 위한 디버그 수준 상세 정보. -
9
: 광범위한 프로토콜 수준 디버깅 정보
값을 지정하지 않으면 기본값
1
이 사용됩니다. -
- 11
- 12
- 클러스터 자동 스케일러가 불필요한 노드를 제거할 수 있는지 여부를 지정합니다.
- 13
- 선택 사항: 노드가 최근에 추가된 후 노드를 삭제하기 전에 대기할 기간을 지정합니다. 값을 지정하지 않으면 기본값으로
10m
이 사용됩니다. - 14
- 선택 사항: 노드가 최근에 삭제된 후 노드를 삭제하기 전에 대기할 기간을 지정합니다. 값을 지정하지 않으면 기본값
0
이 사용됩니다. - 15
- 선택 사항: 축소 실패 후 노드를 삭제하기 전에 대기할 기간을 지정합니다. 값을 지정하지 않으면 기본값으로
3m
가 사용됩니다. - 16
- 선택 사항: 불필요한 노드를 삭제할 수 있을 때까지 기간을 지정합니다. 값을 지정하지 않으면 기본값으로
10m
이 사용됩니다. - 17
- 선택 사항: 노드 사용률 수준을 지정합니다. 이 사용률 수준의 노드는 삭제할 수 있습니다.
노드 사용률 수준은 요청된 리소스를 노드에 대해 할당된 리소스로 나눈 합계이며
"0"
보다 크지만"1"
미만이어야 합니다. 값을 지정하지 않으면 클러스터 자동 스케일러는 기본값"0.5"
를 사용하며 이는 사용률 50%에 해당합니다. 이 값을 문자열로 표현해야 합니다.
스케일링 작업을 수행할 때 클러스터 자동 스케일러는 클러스터에서 배포할 최소 및 최대 코어 수 또는 메모리 양과 같은 ClusterAutoscaler
리소스 정의에 설정된 범위 내에 유지됩니다. 그러나 클러스터 자동 스케일러는 해당 범위 내에 있는 클러스터의 현재 값을 수정하지 않습니다.
클러스터 자동 스케일러가 노드를 관리하지 않더라도 최소 및 최대 CPU, 메모리 및 GPU 값은 클러스터의 모든 노드에서 해당 리소스를 계산하여 결정됩니다. 예를 들어 클러스터 자동 스케일러가 컨트롤 플레인 노드를 관리하지 않더라도 컨트롤 플레인 노드는 클러스터의 총 메모리에서 고려됩니다.
7.2.2. 클러스터 자동 스케일러 배포
클러스터 자동 스케일러를 배포하려면 ClusterAutoscaler
리소스의 인스턴스를 만듭니다.
절차
-
사용자 지정 리소스 정의가 포함된
ClusterAutoscaler
리소스에 대한 YAML 파일을 만듭니다. 다음 명령을 실행하여 클러스터에 사용자 지정 리소스를 생성합니다.
$ oc create -f <filename>.yaml 1
- 1
<filename
>은 사용자 정의 리소스 파일의 이름입니다.
다음 단계
- 클러스터 자동 스케일러를 구성한 후 하나 이상의 머신 자동 스케일러를 구성해야 합니다.