16장. 워크로드 파티셔닝


리소스가 제한적인 환경에서는 워크로드 파티셔닝을 사용하여 OpenShift Container Platform 서비스, 클러스터 관리 워크로드 및 인프라 Pod를 분리하여 예약된 CPU 세트에서 실행할 수 있습니다.

클러스터 관리에 필요한 최소 예약된 CPU 수는 4개의 CPU Hyper-Threads(HT)입니다. 워크로드 파티셔닝을 사용하면 클러스터 관리 워크로드 파티션에 포함할 수 있도록 클러스터 관리 Pod 세트와 일반적인 추가 기능 Operator 세트에 주석을 답니다. 이러한 Pod는 최소 크기 CPU 구성 내에서 정상적으로 작동합니다. 최소 클러스터 관리 Pod 세트 이외의 추가 Operator 또는 워크로드에는 워크로드 파티션에 추가 CPU를 추가해야 합니다.

워크로드 파티셔닝은 표준 Kubernetes 스케줄링 기능을 사용하여 플랫폼 워크로드에서 사용자 워크로드를 분리합니다.

워크로드 파티셔닝에는 다음과 같은 변경이 필요합니다.

  1. 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 입니다.
    참고

    워크로드 파티셔닝은 클러스터 설치 중에만 활성화할 수 있습니다. 워크로드 파티션 설치 후 비활성화할 수 없습니다.

  2. 성능 프로필에서 분리된 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)
    • 대규모 페이지 크기(크기)를 설정합니다.
    • nodehugepages 가 할당된 NUMA 노드로 설정합니다(노드)

    spec.realTimeKernel

    실시간 커널을 사용하려면 enabledtrue 로 설정합니다.

    spec.workloadHints

    workloadHints 를 사용하여 다른 워크로드 유형에 대한 최상위 플래그 세트를 정의합니다. 예제 구성은 짧은 대기 시간과 높은 성능을 위해 클러스터를 구성합니다.

워크로드 파티셔닝으로 플랫폼 pod의 확장된 management.workload.openshift.io/cores 리소스 유형을 도입합니다. kubelet은 해당 리소스 내에서 풀에 할당된 Pod의 리소스 및 CPU 요청을 알립니다. 워크로드 파티셔닝이 활성화되면 management.workload.openshift.io/cores 리소스를 사용하면 스케줄러에서 기본 cpuset 뿐만 아니라 호스트의 cpushares 용량에 따라 Pod를 올바르게 할당할 수 있습니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.