3.7. NFD 토폴로지 업데이트 프로그램 사용

NFD(Node Feature Discovery) Topology Updater는 작업자 노드에서 할당된 리소스를 검사하는 데몬입니다. 이 노드는 영역별로 새 Pod에 할당할 수 있는 리소스를 차지하며, 여기서 영역이 NUMA(Non-Uniform Memory Access) 노드일 수 있습니다. NFD Topology Updater는 정보를 nfd-master에 전달하여 클러스터의 모든 작업자 노드에 해당하는 NodeResourceTopology CR(사용자 정의 리소스)을 생성합니다. NFD 토폴로지 업데이트 관리자의 하나의 인스턴스는 클러스터의 각 노드에서 실행됩니다.

NFD에서 토폴로지 업데이트 관리자 작업자를 활성화하려면 Node Feature Discovery Operator를 사용하는 섹션에 설명된 대로 NodeFeatureDiscovery CR에서 topologyupdater 변수를 true 로 설정합니다.

3.7.1. NodeResourceTopology CR

NFD Topology Updater를 사용하여 실행하는 경우 NFD는 다음과 같은 노드 리소스 하드웨어 토폴로지에 해당하는 사용자 정의 리소스 인스턴스를 생성합니다.

apiVersion: topology.node.k8s.io/v1alpha1
kind: NodeResourceTopology
metadata:
  name: node1
topologyPolicies: ["SingleNUMANodeContainerLevel"]
zones:
  - name: node-0
    type: Node
    resources:
      - name: cpu
        capacity: 20
        allocatable: 16
        available: 10
      - name: vendor/nic1
        capacity: 3
        allocatable: 3
        available: 3
  - name: node-1
    type: Node
    resources:
      - name: cpu
        capacity: 30
        allocatable: 30
        available: 15
      - name: vendor/nic2
        capacity: 6
        allocatable: 6
        available: 6
  - name: node-2
    type: Node
    resources:
      - name: cpu
        capacity: 30
        allocatable: 30
        available: 15
      - name: vendor/nic1
        capacity: 3
        allocatable: 3
        available: 3

3.7.2. NFD Topology Updater 명령줄 플래그

사용 가능한 명령줄 플래그를 보려면 nfd-topology-updater -help 명령을 실행합니다. 예를 들어 podman 컨테이너에서 다음 명령을 실행합니다.

$ podman run gcr.io/k8s-staging-nfd/node-feature-discovery:master nfd-topology-updater -help
-ca-file

-ca-file 플래그는 NFD Topology Updater의 상호 TLS 인증을 제어하는 -cert-file 및 '-key-file'flags와 함께 세 개의 플래그 중 하나입니다. 이 플래그는 nfd-master의 진위 여부를 확인하는 데 사용되는 TLS 루트 인증서를 지정합니다.

기본값: empty

중요

-ca-file 플래그는 -cert-file-key-file 플래그와 함께 지정해야 합니다.

예제

$ nfd-topology-updater -ca-file=/opt/nfd/ca.crt -cert-file=/opt/nfd/updater.crt -key-file=/opt/nfd/updater.key

-cert-file

-cert-file 플래그는 NFD Topology Updater에서 상호 TLS 인증을 제어하는 -ca-file-key-file 플래그 와 함께 세 개의 플래그 중 하나입니다. 이 플래그는 발신 요청을 인증하기 위해 제공되는 TLS 인증서를 지정합니다.

기본값: empty

중요

cert-file 플래그는 -ca-file-key-file 플래그와 함께 지정해야 합니다.

예제

$ nfd-topology-updater -cert-file=/opt/nfd/updater.crt -key-file=/opt/nfd/updater.key -ca-file=/opt/nfd/ca.crt

-h, -help

사용법을 출력하고 종료합니다.

-key-file

-key-file 플래그는 NFD Topology Updater의 상호 TLS 인증을 제어하는 -ca-file-cert-file 플래그와 함께 세 개의 플래그 중 하나입니다. 이 플래그는 발신 요청을 인증하는 데 사용되는 지정된 인증서 파일 또는 -cert-file 에 해당하는 개인 키를 지정합니다.

기본값: empty

중요

key-file 플래그는 -ca-file-cert-file 플래그와 함께 지정해야 합니다.

예제

$ nfd-topology-updater -key-file=/opt/nfd/updater.key -cert-file=/opt/nfd/updater.crt -ca-file=/opt/nfd/ca.crt

-kubelet-config-file

-kubelet-config-file 은 Kubelet의 구성 파일의 경로를 지정합니다.

기본값: /host-var/lib/kubelet/config.yaml

예제

$ nfd-topology-updater -kubelet-config-file=/var/lib/kubelet/config.yaml

-no-publish

-no-publish 플래그는 nfd-master와의 모든 통신을 비활성화하여 nfd-topology-updater에 대한 시험 실행 플래그로 설정합니다. NFD Topology Updater는 리소스 하드웨어 토폴로지 탐지를 정상적으로 실행하지만 CR 요청은 nfd-master로 전송되지 않습니다.

기본값: false

예제

$ nfd-topology-updater -no-publish

3.7.2.1. -oneshot

-oneshot 플래그를 사용하면 리소스 하드웨어 토폴로지 탐지를 한 번 통과한 후 NFD Topology Updater가 종료됩니다.

기본값: false

예제

$ nfd-topology-updater -oneshot -no-publish

-podresources-socket

-podresources-socket 플래그는 kubelet이 gRPC 서비스를 내보내는 Unix 소켓의 경로를 지정하여 사용 중인 CPU 및 장치를 검색하고 해당 소켓에 대한 메타데이터를 제공합니다.

기본값: /host-var/liblib/kubelet/pod-resources/kubelet.sock

예제

$ nfd-topology-updater -podresources-socket=/var/lib/kubelet/pod-resources/kubelet.sock

-server

-server 플래그는 연결할 nfd-master 끝점의 주소를 지정합니다.

기본값: localhost:8080

예제

$ nfd-topology-updater -server=nfd-master.nfd.svc.cluster.local:443

-server-name-override

-server-name-override 플래그는 nfd-master TLS 인증서에서 기대할 수 있는 CN(일반 이름)을 지정합니다. 이 플래그는 대부분 개발 및 디버깅용으로 사용됩니다.

기본값: empty

예제

$ nfd-topology-updater -server-name-override=localhost

-sleep-interval

-sleep-interval 플래그는 리소스 하드웨어 토폴로지 재시험 및 사용자 정의 리소스 업데이트 사이의 간격을 지정합니다. 양수가 아닌 값은 무한 절전 간격을 의미하며 재검색이 수행되지 않습니다.

기본값: 60s

예제

$ nfd-topology-updater -sleep-interval=1h

-version

버전을 출력하고 종료합니다.

-watch-namespace

-watch-namespace 플래그는 지정된 네임스페이스에서 실행되는 Pod에 대해서만 리소스 하드웨어 토폴로지 검사를 수행하도록 네임스페이스를 지정합니다. 지정된 네임스페이스에서 실행되지 않는 Pod는 리소스 계정 중에 고려되지 않습니다. 이는 테스트 및 디버깅 목적에 특히 유용합니다. * 값은 회계 프로세스 중에 모든 네임스페이스의 모든 Pod를 고려합니다.

기본값: *

예제

$ nfd-topology-updater -watch-namespace=rte