16장. 워크로드 파티셔닝
리소스가 제한적인 환경에서는 워크로드 파티셔닝을 사용하여 OpenShift Container Platform 서비스, 클러스터 관리 워크로드 및 인프라 Pod를 분리하여 예약된 CPU 세트에서 실행할 수 있습니다.
클러스터 관리에 필요한 최소 예약된 CPU 수는 4개의 CPU Hyper-Threads(HT)입니다. 워크로드 파티셔닝을 사용하면 클러스터 관리 워크로드 파티션에 포함할 수 있도록 클러스터 관리 Pod 세트와 일반적인 추가 기능 Operator 세트에 주석을 답니다. 이러한 Pod는 최소 크기 CPU 구성 내에서 정상적으로 작동합니다. 최소 클러스터 관리 Pod 세트 이외의 추가 Operator 또는 워크로드에는 워크로드 파티션에 추가 CPU를 추가해야 합니다.
워크로드 파티셔닝은 표준 Kubernetes 스케줄링 기능을 사용하여 플랫폼 워크로드에서 사용자 워크로드를 분리합니다.
워크로드 파티셔닝에는 다음과 같은 변경이 필요합니다.
install-config.yaml
파일에서 추가 필드:cpu CryostatingMode 를
추가합니다.apiVersion: v1 baseDomain: devcluster.openshift.com cpuPartitioningMode: AllNodes 1 compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: {} replicas: 3 controlPlane: architecture: amd64 hyperthreading: Enabled name: master platform: {} replicas: 3
- 1
- 설치 시 CPU 파티셔닝을 위한 클러스터를 설정합니다. 기본값은
None
입니다.
참고워크로드 파티셔닝은 클러스터 설치 중에만 활성화할 수 있습니다. 워크로드 파티션 설치 후 비활성화할 수 없습니다.
성능 프로필에서
분리된
CPU와예약된
CPU를 지정합니다.권장되는 성능 프로파일 구성
apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: # if you change this name make sure the 'include' line in TunedPerformancePatch.yaml # matches this name: include=openshift-node-performance-${PerformanceProfile.metadata.name} # Also in file 'validatorCRs/informDuValidator.yaml': # name: 50-performance-${PerformanceProfile.metadata.name} name: openshift-node-performance-profile annotations: ran.openshift.io/reference-configuration: "ran-du.redhat.com" spec: additionalKernelArgs: - "rcupdate.rcu_normal_after_boot=0" - "efi=runtime" - "vfio_pci.enable_sriov=1" - "vfio_pci.disable_idle_d3=1" - "module_blacklist=irdma" cpu: isolated: $isolated reserved: $reserved hugepages: defaultHugepagesSize: $defaultHugepagesSize pages: - size: $size count: $count node: $node machineConfigPoolSelector: pools.operator.machineconfiguration.openshift.io/$mcp: "" nodeSelector: node-role.kubernetes.io/$mcp: '' numa: topologyPolicy: "restricted" # To use the standard (non-realtime) kernel, set enabled to false realTimeKernel: enabled: true workloadHints: # WorkloadHints defines the set of upper level flags for different type of workloads. # See https://github.com/openshift/cluster-node-tuning-operator/blob/master/docs/performanceprofile/performance_profile.md#workloadhints # for detailed descriptions of each item. # The configuration below is set for a low latency, performance mode. realTime: true highPowerConsumption: false perPodPowerManagement: false
표 16.1. 단일 노드 OpenShift 클러스터에 대한 PerformanceProfile CR 옵션 PerformanceProfile CR 필드 설명 metadata.name
name
이 관련 GitOps ZTP CR(사용자 정의 리소스)에 설정된 다음 필드와 일치하는지 확인합니다.-
TunedPerformancePatch.yaml
에서include=openshift-node-performance-${PerformanceProfile.metadata.name}
-
이름:
validatorCRs/informDuValidator.yaml
의 50-performance-${PerformanceProfile.metadata.name}
spec.additionalKernelArgs
"EFI=runtime"
은 클러스터 호스트에 대해 UEFI 보안 부팅을 구성합니다.spec.cpu.isolated
분리된 CPU를 설정합니다. 모든 Hyper-Threading 쌍이 일치하는지 확인합니다.
중요예약 및 격리된 CPU 풀은 겹치지 않아야 하며 함께 사용 가능한 모든 코어에 걸쳐 있어야 합니다. 에 대해 고려하지 않은 CPU 코어로 인해 시스템에서 정의되지 않은 동작이 발생합니다.
spec.cpu.reserved
예약된 CPU를 설정합니다. 워크로드 파티셔닝이 활성화되면 시스템 프로세스, 커널 스레드 및 시스템 컨테이너 스레드가 이러한 CPU로 제한됩니다. 분리되지 않은 모든 CPU를 예약해야 합니다.
spec.hugepages.pages
-
대규모 페이지 수 설정 (
count
) -
대규모 페이지 크기(
크기
)를 설정합니다. -
node
를hugepages
가 할당된 NUMA 노드로 설정합니다(노드
)
spec.realTimeKernel
실시간 커널을 사용하려면
enabled
를true
로 설정합니다.spec.workloadHints
workloadHints
를 사용하여 다른 워크로드 유형에 대한 최상위 플래그 세트를 정의합니다. 예제 구성은 짧은 대기 시간과 높은 성능을 위해 클러스터를 구성합니다.-
워크로드 파티셔닝으로 플랫폼 pod의 확장된 management.workload.openshift.io/cores
리소스 유형을 도입합니다. kubelet은 해당 리소스 내에서 풀에 할당된 Pod의 리소스 및 CPU 요청을 알립니다. 워크로드 파티셔닝이 활성화되면 management.workload.openshift.io/cores
리소스를 사용하면 스케줄러에서 기본 cpuset
뿐만 아니라 호스트의 cpushares
용량에 따라 Pod를 올바르게 할당할 수 있습니다.
추가 리소스
- 단일 노드 OpenShift 클러스터에 권장되는 워크로드 파티셔닝 구성은 워크로드 분할 작업을 참조하십시오.