18장. 성능 프로필을 사용하여 낮은 대기 시간을 위한 호스팅 제어 평면 조정


성능 프로필을 적용하여 호스팅된 제어 평면을 낮은 지연 시간으로 조정합니다. 성능 프로필을 사용하면 인프라 및 애플리케이션 컨테이너의 CPU를 제한하고 지연에 민감한 프로세스에 대해 대규모 페이지, 하이퍼스레딩 및 CPU 파티션을 구성할 수 있습니다.

18.1. 호스팅된 제어 평면에 대한 성능 프로필 생성

PPC(Performance Profile Creator) 도구를 사용하여 클러스터 성능 프로필을 만들 수 있습니다. PPC는 노드 튜닝 연산자의 기능입니다.

PPC는 클러스터에 대한 정보와 사용자가 제공한 구성을 결합하여 하드웨어, 토폴로지, 사용 사례에 적합한 성능 프로필을 생성합니다.

다음은 클러스터에서 성능 프로필을 만들고 적용하기 위한 고급 워크플로입니다.

  1. must-gather 명령을 사용하여 클러스터에 대한 정보를 수집합니다.
  2. PPC 도구를 사용하여 성과 프로필을 만듭니다.
  3. 클러스터에 성능 프로필을 적용합니다.

18.1.1. PPC에 대한 호스팅된 제어 평면 클러스터에 대한 데이터 수집

PPC(Performance Profile creator) 툴에는 must-gather 데이터가 필요합니다. 클러스터 관리자로서 must-gather 명령을 실행하여 클러스터에 대한 정보를 캡처합니다.

사전 요구 사항

  • 관리 클러스터에 대한 클러스터 관리자 역할 액세스 권한이 있습니다.
  • OpenShift CLI(oc)를 설치합니다.

프로세스

  1. 다음 명령을 실행하여 관리 클러스터 kubeconfig 파일을 내보냅니다.

    $ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 모든 네임스페이스의 모든 노드 풀을 나열합니다.

    $ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
    Copy to Clipboard Toggle word wrap

    출력 예

    NAMESPACE   NAME                     CLUSTER       DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION   UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
    clusters    democluster-us-east-1a   democluster   1               1               False         False        4.17.0    False             True
    Copy to Clipboard Toggle word wrap

    • 출력에서는 NodePool 리소스가 정의된 관리 클러스터의 네임스페이스 클러스터가 표시됩니다.
    • NodePool 리소스의 이름(예: demcluster-us-east-1a) 입니다.
    • NodePool 이 속한 HostedCluster 입니다. 예를 들어, democluster .
  3. 관리 클러스터에서 다음 명령을 실행하여 사용 가능한 비밀을 나열합니다.

    $ oc get secrets -n clusters
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                              TYPE                      DATA   AGE
    builder-dockercfg-25qpp           kubernetes.io/dockercfg   1      128m
    default-dockercfg-mkvlz           kubernetes.io/dockercfg   1      128m
    democluster-admin-kubeconfig      Opaque                    1      127m
    democluster-etcd-encryption-key   Opaque                    1      128m
    democluster-kubeadmin-password    Opaque                    1      126m
    democluster-pull-secret           Opaque                    1      128m
    deployer-dockercfg-8lfpd          kubernetes.io/dockercfg   1      128m
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 호스팅된 클러스터의 kubeconfig 파일을 추출합니다.

    $ oc get secret <secret_name> -n <cluster_namespace> -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

    $ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

  5. 호스팅된 클러스터에 대한 필수 수집 번들을 생성하려면 별도의 터미널 창을 열고 다음 명령을 실행하세요.

    1. 호스팅된 클러스터 kubeconfig 파일을 내보냅니다.

      $ export HC_KUBECONFIG=<path_to_hosted_cluster_kubeconfig>
      Copy to Clipboard Toggle word wrap

      $ export HC_KUBECONFIG=~/hostedcpkube/hosted-cluster-kubeconfig
      Copy to Clipboard Toggle word wrap

    2. must-gather 데이터를 저장하려는 디렉터리로 이동합니다.
    3. 호스팅된 클러스터에 대한 문제 해결 데이터를 수집하세요.

      $ oc --kubeconfig="$HC_KUBECONFIG" adm must-gather
      Copy to Clipboard Toggle word wrap
    4. 작업 디렉토리에서 생성된 must-gather 디렉토리에서 압축 파일을 만듭니다. 예를 들어 Linux 운영 체제를 사용하는 컴퓨터에서 다음 명령을 실행합니다.

      $ tar -czvf must-gather.tar.gz must-gather.local.1203869488012141147
      Copy to Clipboard Toggle word wrap

클러스터 관리자는 Podman을 Performance Profile Creator(PPC) 도구와 함께 사용하여 성능 프로필을 만들 수 있습니다.

PPC 인수에 대한 자세한 내용은 "성과 프로필 생성자 인수"를 참조하세요.

PPC 도구는 호스팅 클러스터를 인식하도록 설계되었습니다. 필수 수집 데이터에서 호스팅된 클러스터를 감지하면 자동으로 다음 작업을 수행합니다.

  • MCP(머신 구성 풀)가 없다는 것을 인식합니다.
  • MCP 대신 컴퓨팅 노드 구성의 진실의 원천으로 노드 풀을 사용합니다.
  • 특정 풀을 타겟으로 삼지 않는 한, node-pool-name 값을 명시적으로 지정할 필요가 없습니다.
중요

PPC는 호스팅된 클러스터에서 수집해야 하는 데이터를 사용하여 성능 프로필을 작성합니다. 성능 구성을 위한 노드의 레이블을 다시 지정하는 등 클러스터를 변경하는 경우 PPC를 다시 실행하기 전에 반드시 수집해야 하는 데이터를 다시 만들어야 합니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • 호스팅된 클러스터가 설치되었습니다.
  • Podman과 OpenShift CLI( oc ) 설치.
  • 노드 튜닝 운영자 이미지에 액세스합니다.
  • 클러스터에 필요한 필수 데이터에 액세스합니다.

프로세스

  1. 호스팅된 클러스터에서 다음 명령을 실행하여 Podman을 사용하여 registry.redhat.io 에 인증합니다.

    $ podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap
    Username: <user_name>
    Password: <password>
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 호스팅된 클러스터에서 성능 프로필을 만듭니다. 이 예제에서는 샘플 PPC 인수와 값을 사용합니다.

    $ podman run --entrypoint performance-profile-creator \
        -v /path/to/must-gather:/must-gather:z \
    1
    
        registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.19 \
        --must-gather-dir-path /must-gather \
        --reserved-cpu-count=2 \
    2
    
        --rt-kernel=false \
    3
    
        --split-reserved-cpus-across-numa=false \ 
    4
    
        --topology-manager-policy=single-numa-node \
    5
    
        --node-pool-name=democluster-us-east-1a \
        --power-consumption-mode=ultra-low-latency \
    6
    
        --offlined-cpu-count=1 \
    7
    
        > my-hosted-cp-performance-profile.yaml
    Copy to Clipboard Toggle word wrap
    1
    oc adm must-gather 의 출력이 생성된 로컬 디렉토리를 컨테이너에 마운트합니다.
    2
    두 개의 예약된 CPU를 지정합니다.
    3
    실시간 커널을 비활성화합니다.
    4
    NUMA 노드에 걸쳐 예약된 CPU 분할을 비활성화합니다.
    5
    NUMA 토폴로지 정책을 지정합니다. NUMA Resources Operator를 설치하는 경우 이를 single-numa-node 로 설정해야 합니다.
    6
    전력 소비가 증가하는 대신 대기 시간을 최소화합니다.
    7
    오프라인 CPU 하나를 지정합니다.

    출력 예

    level=info msg="Nodes names targeted by democluster-us-east-1a pool are: ip-10-0-129-110.ec2.internal "
    level=info msg="NUMA cell(s): 1"
    level=info msg="NUMA cell 0 : [0 2 1 3]"
    level=info msg="CPU(s): 4"
    level=info msg="2 reserved CPUs allocated: 0,2 "
    level=info msg="1 isolated CPUs allocated: 1"
    level=info msg="Additional Kernel Args based on configuration: []
    Copy to Clipboard Toggle word wrap

  3. 다음 명령을 실행하여 생성된 YAML 파일을 검토하세요.

    $ cat my-hosted-cp-performance-profile
    Copy to Clipboard Toggle word wrap

    출력 예

    ---
    apiVersion: v1
    data:
      tuning: |
        apiVersion: performance.openshift.io/v2
        kind: PerformanceProfile
        metadata:
          creationTimestamp: null
          name: performance
        spec:
          cpu:
            isolated: "1"
            offlined: "3"
            reserved: 0,2
          net:
            userLevelNetworking: false
          nodeSelector:
            node-role.kubernetes.io/worker: ""
          numa:
            topologyPolicy: single-numa-node
          realTimeKernel:
            enabled: false
          workloadHints:
            highPowerConsumption: true
            perPodPowerManagement: false
            realTime: true
        status: {}
    kind: ConfigMap
    metadata:
      name: performance
      namespace: clusters
    Copy to Clipboard Toggle word wrap

18.1.3. 호스팅된 클러스터에서 저지연 튜닝 구성

호스팅된 클러스터의 노드에서 성능 프로필로 낮은 대기 시간을 설정하려면 노드 튜닝 연산자를 사용할 수 있습니다. 호스팅된 제어 평면에서 튜닝된 객체를 포함하는 구성 맵을 만들고 노드 풀에서 해당 구성 맵을 참조하여 저지연 튜닝을 구성할 수 있습니다. 이 경우 조정된 개체는 노드 풀의 노드에 적용하려는 성능 프로필을 정의하는 PerformanceProfile 개체입니다.

프로세스

  1. 다음 명령을 실행하여 관리 클러스터 kubeconfig 파일을 내보냅니다.

    $ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 관리 클러스터에 ConfigMap 객체를 만듭니다.

    $ oc --kubeconfig="$MGMT_KUBECONFIG" apply -f my-hosted-cp-performance-profile.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 클러스터 네임스페이스의 NodePool 객체를 편집하여 spec.tuningConfig 필드와 해당 필드에 생성된 성능 프로필의 이름을 추가합니다.

    $ oc edit np -n clusters
    Copy to Clipboard Toggle word wrap
    apiVersion: hypershift.openshift.io/v1beta1
    kind: NodePool
    metadata:
      annotations:
        hypershift.openshift.io/nodePoolCurrentConfig: 2f752a2c
        hypershift.openshift.io/nodePoolCurrentConfigVersion: 998aa3ce
        hypershift.openshift.io/nodePoolPlatformMachineTemplate: democluster-us-east-1a-3dff55ec
      creationTimestamp: "2025-04-09T09:41:55Z"
      finalizers:
      - hypershift.openshift.io/finalizer
      generation: 1
      labels:
        hypershift.openshift.io/auto-created-for-infra: democluster
      name: democluster-us-east-1a
      namespace: clusters
      ownerReferences:
      - apiVersion: hypershift.openshift.io/v1beta1
        kind: HostedCluster
        name: democluster
        uid: af77e390-c289-433c-9d29-3aee8e5dc76f
      resourceVersion: "53056"
      uid: 11efa47c-5a7b-476c-85cf-a274f748a868
    spec:
      tuningConfig:
      - name: performance
      arch: amd64
      clusterName: democluster
      management:
    Copy to Clipboard Toggle word wrap
    참고

    여러 노드 풀에서 동일한 프로필을 참조할 수 있습니다. 호스팅된 제어 평면에서 노드 튜닝 연산자는 노드 풀 이름과 네임스페이스의 해시를 튜닝된 사용자 지정 리소스의 이름에 추가하여 이를 구별합니다. 변경 사항을 적용한 후 시스템은 구성 변경이 필요하다는 것을 감지하고 해당 풀의 노드에 대한 롤링 업데이트를 시작하여 새 구성을 적용합니다.

검증

  1. 다음 명령을 실행하여 모든 네임스페이스의 모든 노드 풀을 나열합니다.

    $ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
    Copy to Clipboard Toggle word wrap

    출력 예

    NAMESPACE   NAME                     CLUSTER       DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION   UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
    clusters    democluster-us-east-1a   democluster   1               1               False         False        4.17.0    False             True
    Copy to Clipboard Toggle word wrap

    참고

    UPDATINGCONFIG 필드는 노드 풀이 구성을 업데이트하는 중인지 여부를 나타냅니다. 이 업데이트 중에 노드 풀 상태의 UPDATINGCONFIG 필드가 True가 됩니다. 새로운 구성은 UPDATINGCONFIG 필드가 False 로 반환될 때만 완전히 적용된 것으로 간주됩니다.

  2. 다음 명령을 실행하여 clusters-democluster 네임스페이스의 모든 구성 맵을 나열합니다.

    $ oc --kubeconfig="$MGMT_KUBECONFIG" get cm -n clusters-democluster
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                 DATA   AGE
    aggregator-client-ca                                 1      69m
    auth-config                                          1      68m
    aws-cloud-config                                     1      68m
    aws-ebs-csi-driver-trusted-ca-bundle                 1      66m
    ...                                                  1      67m
    kubelet-client-ca                                    1      69m
    kubeletconfig-performance-democluster-us-east-1a     1      22m
    ...
    ovnkube-identity-cm                                  2      66m
    performance-democluster-us-east-1a                   1      22m
    ...
    tuned-performance-democluster-us-east-1a             1      22m
    Copy to Clipboard Toggle word wrap

    출력에서는 kubeletconfig kubeletconfig-performance-democluster-us-east-1a 와 성능 프로필 performance-democluster-us-east-1a가 생성되었음을 보여줍니다. 노드 튜닝 운영자는 튜닝된 객체를 호스팅된 클러스터에 동기화합니다. 어떤 Tuned 객체가 정의되어 있는지, 그리고 각 노드에 어떤 프로필이 적용되어 있는지 확인할 수 있습니다.

  3. 다음 명령을 실행하여 관리 클러스터에서 사용 가능한 비밀을 나열합니다.

    $ oc get secrets -n clusters
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                              TYPE                      DATA   AGE
    builder-dockercfg-25qpp           kubernetes.io/dockercfg   1      128m
    default-dockercfg-mkvlz           kubernetes.io/dockercfg   1      128m
    democluster-admin-kubeconfig      Opaque                    1      127m
    democluster-etcd-encryption-key   Opaque                    1      128m
    democluster-kubeadmin-password    Opaque                    1      126m
    democluster-pull-secret           Opaque                    1      128m
    deployer-dockercfg-8lfpd          kubernetes.io/dockercfg   1      128m
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 호스팅된 클러스터의 kubeconfig 파일을 추출합니다.

    $ oc get secret <secret_name> -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

    $ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
    Copy to Clipboard Toggle word wrap

  5. 다음 명령을 실행하여 호스팅된 클러스터 kubeconfig를 내보냅니다.

    $ export HC_KUBECONFIG=<path_to_hosted-cluster-kubeconfig>
    Copy to Clipboard Toggle word wrap
  6. 다음 명령을 실행하여 kubeletconfig가 호스팅된 클러스터에 미러링되었는지 확인하세요.

    $ oc --kubeconfig="$HC_KUBECONFIG" get cm -n openshift-config-managed | grep kubelet
    Copy to Clipboard Toggle word wrap

    출력 예

    kubelet-serving-ca                            			1   79m
    kubeletconfig-performance-democluster-us-east-1a		1   15m
    Copy to Clipboard Toggle word wrap

  7. 다음 명령을 실행하여 호스팅된 클러스터에 단일 numa 노드 정책이 설정되었는지 확인하세요.

    $ oc --kubeconfig="$HC_KUBECONFIG" get cm kubeletconfig-performance-democluster-us-east-1a -o yaml -n openshift-config-managed | grep single
    Copy to Clipboard Toggle word wrap

    출력 예

        topologyManagerPolicy: single-numa-node
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat