5.4. 노드당 최대 Pod 수 관리
OpenShift Container Platform에서는 노드의 프로세서 코어 수, 하드 제한 또는 둘 다에 따라 노드에서 실행할 수 있는 Pod 수를 구성할 수 있습니다. 두 옵션을 모두 사용하는 경우 두 옵션 중 더 낮은 값이 노드의 Pod 수를 제한합니다.
이 값을 초과하면 다음과 같은 결과가 발생할 수 있습니다.
- OpenShift Container Platform의 CPU 사용률 증가.
- Pod 예약 속도 저하.
- 노드의 메모리 크기에 따라 메모리 부족 시나리오 발생.
- IP 주소 풀 소모.
- 리소스 과다 할당으로 인한 사용자 애플리케이션 성능 저하.
단일 컨테이너를 보유하고 있는 Pod의 경우 실제로는 컨테이너 두 개를 사용합니다. 두 번째 컨테이너는 실제 컨테이너가 시작되기 전에 네트워킹을 설정합니다. 결과적으로 Pod 10개를 실행하는 노드가 실제로는 컨테이너 20개를 실행합니다.
podsPerCore
매개변수는 노드의 프로세서 코어 수에 따라 노드에서 실행할 수 있는 Pod 수를 제한합니다. 예를 들어 프로세서 코어가 4개인 노드에서 podsPerCore
가 10
으로 설정된 경우 노드에 허용되는 최대 Pod 수는 40입니다.
maxPods
매개변수는 노드의 속성과 관계없이 노드에서 실행할 수 있는 Pod 수를 고정된 값으로 제한합니다.
5.4.1. 노드 당 최대 pod 수 구성
podsPerCore
및 maxPods
는 노드에 예약할 수 있는 최대 Pod 수를 제어합니다. 두 옵션을 모두 사용하는 경우 두 옵션 중 더 낮은 값이 노드의 Pod 수를 제한합니다.
예를 들어 4 개의 프로세서 코어가 있는 노드에서 podsPerCore
가 10
으로 설정된 경우 노드에서 허용되는 최대 Pod 수는 40입니다.
사전 요구 사항
구성하려는 노드 유형의 정적
MachineConfigPool
CRD와 연관된 라벨을 가져옵니다. 다음 중 하나를 실행합니다.Machine config pool을 표시합니다.
$ oc describe machineconfigpool <name>
예를 들면 다음과 같습니다.
$ oc describe machineconfigpool worker
출력 예
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: creationTimestamp: 2019-02-08T14:52:39Z generation: 1 labels: custom-kubelet: small-pods 1
- 1
- 라벨이 추가되면
labels
아래에 표시됩니다.
라벨이 없으면 키/값 쌍을 추가합니다.
$ oc label machineconfigpool worker custom-kubelet=small-pods
프로세스
구성 변경을 위한 사용자 정의 리소스 (CR)를 만듭니다.
max-pods
CR의 설정 예apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: set-max-pods 1 spec: machineConfigPoolSelector: matchLabels: custom-kubelet: small-pods 2 kubeletConfig: podsPerCore: 10 3 maxPods: 250 4
참고podsPerCore
를0
으로 설정하면 이 제한이 비활성화됩니다.위의 예에서
podsPerCore
의 기본값은10
이며maxPods
의 기본값은250
입니다. 즉, 노드에 25 개 이상의 코어가 없으면 기본적으로podsPerCore
가 제한 요소가 됩니다.MachineConfigPool
CRD를 나열하여 변경 사항이 적용되는지 확인합니다. Machine Config Controller에서 변경 사항을 선택하면UPDATING
열에True
가 보고됩니다.$ oc get machineconfigpools
출력 예
NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False False False worker worker-8cecd1236b33ee3f8a5e False True False
변경이 완료되면
UPDATED
열에True
가 보고됩니다.$ oc get machineconfigpools
출력 예
NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False True False worker worker-8cecd1236b33ee3f8a5e True False False