3.5. NFD トポロジーアップデータの使用
Node Feature Discovery (NFD) Topology Updater は、ワーカーノードに割り当てられたリソースを調べるデーモンです。これは、ゾーンごとに新規 Pod に割り当てることができるリソースに対応し、ゾーンを Non-Uniform Memory Access (NUMA) ノードにすることができます。NFD Topology Updater は、情報を nfd-master に伝達します。これにより、クラスター内のすべてのワーカーノードに対応するNodeResourceTopology
カスタムリソース (CR) が作成されます。NFD Topology Updater のインスタンスが 1 台、クラスターの各ノードで実行されます。
NFD で Topology Updater ワーカーを有効にするにはNode Feature Discovery Operator の使用のセクションで説明されているように、Node Feature Discovery CR
でtopologyupdater
変数をtrue
に設定します。
3.5.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.5.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
フラグは、 -cert-file
フラグおよび `-key-file`フラグとともに、NFD トポロジーアップデータで相互 TLS 認証を制御する 3 つのフラグの 1 つです。このフラグは、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
フラグは、 -ca-file
と -key-file flags
とともに、NFD トポロジーアップデータで相互 TLS 認証を制御する 3 つのフラグの 1 つです。このフラグは、送信要求の認証時に提示する 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
フラグは、 -ca-file
と -cert-file
フラグとともに、NFD Topology Updater で相互 TLS 認証を制御する 3 つのフラグの 1 つです。このフラグは、指定の証明書ファイルまたは-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.5.2.1. -oneshot
-oneshot
フラグを使用すると、リソースハードウェアトポロジーの検出が 1 回行われた後も、NFD Topology Updater が終了します。
デフォルト: false
例
$ nfd-topology-updater -oneshot -no-publish
-podresources-socket
-podresources-socket
フラグは、kubelet が gRPC サービスをエクスポートして使用中の CPU とデバイスを検出できるようにし、それらのメタデータを提供する Unix ソケットへのパスを指定します。
デフォルト: /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
フラグは namespace を指定して、指定された namespace で実行されている Pod に対してのみリソースハードウェアトポロジーの検査が行われるようにします。指定された namespace で実行されていない Pod は、リソースアカウンティングでは考慮されません。これは、テストとデバッグの目的で特に役立ちます。*
値は、全 namespace に含まれるすべての Pod がアカウンティングプロセス中に考慮されることを意味します。
デフォルト: *
例
$ nfd-topology-updater -watch-namespace=rte