7.8. 토폴로지 관리자


토폴로지 관리자를 이해하고 사용합니다.

7.8.1. 토폴로지 관리자 정책

토폴로지 관리자는 CPU 관리자 및 장치 관리자와 같은 힌트 공급자로부터 토폴로지 힌트를 수집하고 수집된 힌트로 Pod 리소스를 정렬하는 방법으로 모든 QoS(Quality of Service) 클래스의 Pod 리소스를 정렬합니다.

토폴로지 관리자는 cpumanager-enabled 라는 KubeletConfig CR(사용자 정의 리소스)에서 할당하는 네 가지 할당 정책을 지원합니다.

none 정책
기본 정책으로, 토폴로지 정렬을 수행하지 않습니다.
best-effort 정책
best-effort 토폴로지 관리 정책이 있는 Pod의 각 컨테이너에서 kubelet은 해당 컨테이너의 기본 NUMA 노드 선호도에 따라 NUMA 노드에 필요한 모든 리소스를 정렬하려고 합니다. 리소스가 부족하여 할당이 불가능하더라도 토폴로지 관리자는 여전히 Pod를 허용하지만 할당은 다른 NUMA 노드와 공유됩니다.
restricted 정책
restricted 토폴로지 관리 정책이 있는 Pod의 각 컨테이너에 대해 kubelet은 요청을 충족할 수 있는 이론적인 최소 NUMA 노드 수를 결정합니다. 실제 할당에 해당 NUMA 노드 수보다 많은 것이 필요한 경우 토폴로지 관리자는 허용을 거부하고 Pod를 Terminated 상태로 배치합니다. NUMA 노드 수가 요청을 충족할 수 있는 경우 토폴로지 관리자는 Pod를 수락하고 Pod가 실행을 시작합니다.
single-numa-node 정책
single-numa-node 토폴로지 관리 정책을 사용하여 Pod의 각 컨테이너에 대해 Pod에 필요한 모든 리소스를 동일한 NUMA 노드에 할당할 수 있는 경우 kubelet은 Pod를 허용합니다. 단일 NUMA 노드 유사성을 사용할 수 없는 경우 토폴로지 관리자는 노드에서 Pod를 거부합니다. 이로 인해 Pod가 Terminated 상태가 되고 Pod 허용 실패가 발생합니다.

7.8.2. 토폴로지 관리자 설정

토폴로지 관리자를 사용하려면 cpumanager-enabled 라는 KubeletConfig CR(사용자 정의 리소스)에서 할당 정책을 구성해야 합니다. CPU 관리자를 설정한 경우 해당 파일이 존재할 수 있습니다. 파일이 없으면 파일을 생성할 수 있습니다.

사전 요구 사항

  • CPU 관리자 정책을 static으로 구성하십시오.

절차

토폴로지 관리자를 활성화하려면 다음을 수행합니다.

  1. 사용자 정의 리소스에서 토폴로지 관리자 할당 정책을 구성합니다.

    $ oc edit KubeletConfig cpumanager-enabled
    Copy to Clipboard Toggle word wrap
    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: cpumanager-enabled
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: cpumanager-enabled
      kubeletConfig:
         cpuManagerPolicy: static 
    1
    
         cpuManagerReconcilePeriod: 5s
         topologyManagerPolicy: single-numa-node 
    2
    Copy to Clipboard Toggle word wrap
    1
    이 매개변수는 소문자 s 가 있는 static 이어야 합니다.
    2
    선택한 토폴로지 관리자 할당 정책을 지정합니다. 여기서는 정책이 single-numa-node입니다. 사용할 수 있는 값은 default, best-effort, restricted, single-numa-node입니다.

7.8.3. Pod와 토폴로지 관리자 정책 간의 상호 작용

예제 Pod 사양은 Pod와 토폴로지 관리자와의 상호 작용을 보여줍니다.

다음 Pod는 리소스 요청 또는 제한이 지정되어 있지 않기 때문에 BestEffort QoS 클래스에서 실행됩니다.

spec:
  containers:
  - name: nginx
    image: nginx
Copy to Clipboard Toggle word wrap

다음 Pod는 요청이 제한보다 작기 때문에 Burstable QoS 클래스에서 실행됩니다.

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"
Copy to Clipboard Toggle word wrap

선택한 정책이 none 이 아닌 경우 토폴로지 관리자는 모든 Pod를 처리하고 Guaranteed Qos Pod 사양에 대해서만 리소스 정렬을 적용합니다. 토폴로지 관리자 정책을 none 으로 설정하면 NUMA 선호도를 고려하지 않고 관련 컨테이너가 사용 가능한 CPU에 고정됩니다. 이는 기본 동작이며 성능에 민감한 워크로드에 대해 최적화되지 않습니다. 다른 값을 사용하면 CPU 및 메모리와 같은 장치 플러그인 코어 리소스에서 토폴로지 인식 정보를 사용할 수 있습니다. 토폴로지 관리자는 정책이 none 이외의 다른 값으로 설정될 때 노드의 토폴로지에 따라 CPU, 메모리 및 장치 할당을 정렬하려고 합니다. 사용 가능한 값에 대한 자세한 내용은 토폴로지 관리자 정책을 참조하십시오.

다음 예제 Pod는 요청이 제한과 같기 때문에 Guaranteed QoS 클래스에서 실행됩니다.

spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
        cpu: "2"
        example.com/device: "1"
      requests:
        memory: "200Mi"
        cpu: "2"
        example.com/device: "1"
Copy to Clipboard Toggle word wrap

토폴로지 관리자는 이러한 Pod를 고려합니다. 토폴로지 관리자는 CPU 관리자, 장치 관리자 및 메모리 관리자인 힌트 공급자를 참조하여 Pod에 대한 토폴로지 힌트를 가져옵니다.

토폴로지 관리자는 이 정보를 사용하여 이 컨테이너에 가장 적합한 토폴로지를 저장합니다. 이 Pod의 경우 CPU 관리자와 장치 관리자는 리소스 할당 단계에서 이러한 저장된 정보를 사용합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat