8.6. NUMA 対応スケジューリングのトラブルシューティング
NUMA 対応の Pod スケジューリングに関する一般的な問題をトラブルシューティングするには、次の手順を実行します。
前提条件
-
OpenShift Container Platform CLI (
oc
) をインストールしている。 - cluster-admin 権限を持つユーザーとしてログインしている。
- NUMA Resources Operator をインストールし、NUMA 対応のセカンダリースケジューラーをデプロイします。
手順
次のコマンドを実行して、
noderesourcetopologies
CRD がクラスターにデプロイされていることを確認します。oc get crd | grep noderesourcetopologies
$ oc get crd | grep noderesourcetopologies
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CREATED AT noderesourcetopologies.topology.node.k8s.io 2022-01-18T08:28:06Z
NAME CREATED AT noderesourcetopologies.topology.node.k8s.io 2022-01-18T08:28:06Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、NUMA 対応スケジューラー名が NUMA 対応ワークロードで指定された名前と一致することを確認します。
oc get numaresourcesschedulers.nodetopology.openshift.io numaresourcesscheduler -o json | jq '.status.schedulerName'
$ oc get numaresourcesschedulers.nodetopology.openshift.io numaresourcesscheduler -o json | jq '.status.schedulerName'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
topo-aware-scheduler
topo-aware-scheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NUMA 対応のスケジュール可能なノードに
noderesourcetopologies
CR が適用されていることを確認します。以下のコマンドを実行します。oc get noderesourcetopologies.topology.node.k8s.io
$ oc get noderesourcetopologies.topology.node.k8s.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE compute-0.example.com 17h compute-1.example.com 17h
NAME AGE compute-0.example.com 17h compute-1.example.com 17h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ノードの数は、マシン設定プール (
mcp
) ワーカー定義によって設定されているワーカーノードの数と等しくなければなりません。次のコマンドを実行して、スケジュール可能なすべてのノードの NUMA ゾーンの粒度を確認します。
oc get noderesourcetopologies.topology.node.k8s.io -o yaml
$ oc get noderesourcetopologies.topology.node.k8s.io -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6.1. より正確なリソース可用性の報告 リンクのコピーリンクがクリップボードにコピーされました!
cacheResyncPeriod
仕様を有効にすると、NUMA Resources Operator は、ノード上の保留中のリソースを監視し、定義された間隔でスケジューラーキャッシュ内のこの情報を同期することで、より正確なリソース可用性を報告できます。これは、次善のスケジューリング決定が引き起こす Topology Affinity Error エラーを最小限に抑えるのにも役立ちます。間隔が短いほど、ネットワーク負荷が大きくなります。デフォルトでは、cacheResyncPeriod
仕様は無効になっています。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
現在実行中の
NUMAResourcesScheduler
リソースを削除します。次のコマンドを実行して、アクティブな
NUMAResourcesScheduler
を取得します。oc get NUMAResourcesScheduler
$ oc get NUMAResourcesScheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE numaresourcesscheduler 92m
NAME AGE numaresourcesscheduler 92m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、セカンダリースケジューラーリソースを削除します。
oc delete NUMAResourcesScheduler numaresourcesscheduler
$ oc delete NUMAResourcesScheduler numaresourcesscheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
numaresourcesscheduler.nodetopology.openshift.io "numaresourcesscheduler" deleted
numaresourcesscheduler.nodetopology.openshift.io "numaresourcesscheduler" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次の YAML を
nro-scheduler-cacheresync.yaml
ファイルに保存します。この例では、ログレベルをDebug
に変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- スケジューラーキャッシュの同期間隔を秒単位の値で入力します。ほとんどの実装におけるこの値は、
5
が一般的です。
次のコマンドを実行して、更新された
NUMAResourcesScheduler
リソースを作成します。oc create -f nro-scheduler-cacheresync.yaml
$ oc create -f nro-scheduler-cacheresync.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
numaresourcesscheduler.nodetopology.openshift.io/numaresourcesscheduler created
numaresourcesscheduler.nodetopology.openshift.io/numaresourcesscheduler created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
NUMA 対応スケジューラーが正常にデプロイされたことを確認します。
次のコマンドを実行して、CRD が正常に作成されたことを確認します。
oc get crd | grep numaresourcesschedulers
$ oc get crd | grep numaresourcesschedulers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CREATED AT numaresourcesschedulers.nodetopology.openshift.io 2022-02-25T11:57:03Z
NAME CREATED AT numaresourcesschedulers.nodetopology.openshift.io 2022-02-25T11:57:03Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、新しいカスタムスケジューラーが使用可能であることを確認します。
oc get numaresourcesschedulers.nodetopology.openshift.io
$ oc get numaresourcesschedulers.nodetopology.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE numaresourcesscheduler 3h26m
NAME AGE numaresourcesscheduler 3h26m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
スケジューラーのログが増加したログレベルを示していることを確認します。
以下のコマンドを実行して、
openshift-numaresources
namespace で実行されている Pod のリストを取得します。oc get pods -n openshift-numaresources
$ oc get pods -n openshift-numaresources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE numaresources-controller-manager-d87d79587-76mrm 1/1 Running 0 46h numaresourcesoperator-worker-5wm2k 2/2 Running 0 45h numaresourcesoperator-worker-pb75c 2/2 Running 0 45h secondary-scheduler-7976c4d466-qm4sc 1/1 Running 0 21m
NAME READY STATUS RESTARTS AGE numaresources-controller-manager-d87d79587-76mrm 1/1 Running 0 46h numaresourcesoperator-worker-5wm2k 2/2 Running 0 45h numaresourcesoperator-worker-pb75c 2/2 Running 0 45h secondary-scheduler-7976c4d466-qm4sc 1/1 Running 0 21m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、セカンダリースケジューラー Pod のログを取得します。
oc logs secondary-scheduler-7976c4d466-qm4sc -n openshift-numaresources
$ oc logs secondary-scheduler-7976c4d466-qm4sc -n openshift-numaresources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6.2. NUMA 対応スケジューラーログの確認 リンクのコピーリンクがクリップボードにコピーされました!
ログを確認して、NUMA 対応スケジューラーの問題をトラブルシューティングします。必要に応じて、NUMAResourcesScheduler
リソースの spec.logLevel
フィールドを変更して、スケジューラーのログレベルを上げることができます。許容値は Normal
、Debug
、および Trace
で、Trace
が最も詳細なオプションとなります。
セカンダリースケジューラーのログレベルを変更するには、実行中のスケジューラーリソースを削除し、ログレベルを変更して再デプロイします。このダウンタイム中、スケジューラーは新しいワークロードのスケジューリングに使用できません。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
現在実行中の
NUMAResourcesScheduler
リソースを削除します。次のコマンドを実行して、アクティブな
NUMAResourcesScheduler
を取得します。oc get NUMAResourcesScheduler
$ oc get NUMAResourcesScheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE numaresourcesscheduler 90m
NAME AGE numaresourcesscheduler 90m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、セカンダリースケジューラーリソースを削除します。
oc delete NUMAResourcesScheduler numaresourcesscheduler
$ oc delete NUMAResourcesScheduler numaresourcesscheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
numaresourcesscheduler.nodetopology.openshift.io "numaresourcesscheduler" deleted
numaresourcesscheduler.nodetopology.openshift.io "numaresourcesscheduler" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下の YAML をファイル
nro-scheduler-debug.yaml
に保存します。この例では、ログレベルをDebug
に変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、更新された
Debug
ロギングNUMAResourcesScheduler
リソースを作成します。oc create -f nro-scheduler-debug.yaml
$ oc create -f nro-scheduler-debug.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
numaresourcesscheduler.nodetopology.openshift.io/numaresourcesscheduler created
numaresourcesscheduler.nodetopology.openshift.io/numaresourcesscheduler created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
NUMA 対応スケジューラーが正常にデプロイされたことを確認します。
次のコマンドを実行して、CRD が正常に作成されたことを確認します。
oc get crd | grep numaresourcesschedulers
$ oc get crd | grep numaresourcesschedulers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CREATED AT numaresourcesschedulers.nodetopology.openshift.io 2022-02-25T11:57:03Z
NAME CREATED AT numaresourcesschedulers.nodetopology.openshift.io 2022-02-25T11:57:03Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、新しいカスタムスケジューラーが使用可能であることを確認します。
oc get numaresourcesschedulers.nodetopology.openshift.io
$ oc get numaresourcesschedulers.nodetopology.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE numaresourcesscheduler 3h26m
NAME AGE numaresourcesscheduler 3h26m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
スケジューラーのログが増加したログレベルを示していることを確認します。
以下のコマンドを実行して、
openshift-numaresources
namespace で実行されている Pod のリストを取得します。oc get pods -n openshift-numaresources
$ oc get pods -n openshift-numaresources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE numaresources-controller-manager-d87d79587-76mrm 1/1 Running 0 46h numaresourcesoperator-worker-5wm2k 2/2 Running 0 45h numaresourcesoperator-worker-pb75c 2/2 Running 0 45h secondary-scheduler-7976c4d466-qm4sc 1/1 Running 0 21m
NAME READY STATUS RESTARTS AGE numaresources-controller-manager-d87d79587-76mrm 1/1 Running 0 46h numaresourcesoperator-worker-5wm2k 2/2 Running 0 45h numaresourcesoperator-worker-pb75c 2/2 Running 0 45h secondary-scheduler-7976c4d466-qm4sc 1/1 Running 0 21m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、セカンダリースケジューラー Pod のログを取得します。
oc logs secondary-scheduler-7976c4d466-qm4sc -n openshift-numaresources
$ oc logs secondary-scheduler-7976c4d466-qm4sc -n openshift-numaresources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6.3. リソーストポロジーエクスポーターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
対応する resource-topology-exporter
ログを調べて、予期しない結果が発生している noderesourcetopologies
オブジェクトをトラブルシューティングします。
クラスター内の NUMA リソーストポロジーエクスポータインスタンスには、参照するノードの名前を付けることが推奨されます。たとえば、worker
という名前のワーカーノードには、worker
という対応する noderesourcetopologies
オブジェクトがあるはずです。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
NUMA Resources Operator によって管理されるデーモンセットを取得します。各 daemonset には、
NUMAResourcesOperator
CR 内に対応するnodeGroup
があります。以下のコマンドを実行します。oc get numaresourcesoperators.nodetopology.openshift.io numaresourcesoperator -o jsonpath="{.status.daemonsets[0]}"
$ oc get numaresourcesoperators.nodetopology.openshift.io numaresourcesoperator -o jsonpath="{.status.daemonsets[0]}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"name":"numaresourcesoperator-worker","namespace":"openshift-numaresources"}
{"name":"numaresourcesoperator-worker","namespace":"openshift-numaresources"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップの
name
の値を使用して、対象となる daemonset のラベルを取得します。oc get ds -n openshift-numaresources numaresourcesoperator-worker -o jsonpath="{.spec.selector.matchLabels}"
$ oc get ds -n openshift-numaresources numaresourcesoperator-worker -o jsonpath="{.spec.selector.matchLabels}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"name":"resource-topology"}
{"name":"resource-topology"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
resource-topology
ラベルを使用して Pod を取得します。oc get pods -n openshift-numaresources -l name=resource-topology -o wide
$ oc get pods -n openshift-numaresources -l name=resource-topology -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE IP NODE numaresourcesoperator-worker-5wm2k 2/2 Running 0 2d1h 10.135.0.64 compute-0.example.com numaresourcesoperator-worker-pb75c 2/2 Running 0 2d1h 10.132.2.33 compute-1.example.com
NAME READY STATUS RESTARTS AGE IP NODE numaresourcesoperator-worker-5wm2k 2/2 Running 0 2d1h 10.135.0.64 compute-0.example.com numaresourcesoperator-worker-pb75c 2/2 Running 0 2d1h 10.132.2.33 compute-1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow トラブルシューティングしているノードに対応するワーカー Pod で実行されている
resource-topology-exporter
コンテナーのログを調べます。以下のコマンドを実行します。oc logs -n openshift-numaresources -c resource-topology-exporter numaresourcesoperator-worker-pb75c
$ oc logs -n openshift-numaresources -c resource-topology-exporter numaresourcesoperator-worker-pb75c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6.4. 欠落しているリソーストポロジーエクスポーター設定マップの修正 リンクのコピーリンクがクリップボードにコピーされました!
クラスター設定が正しく設定されていないクラスターに NUMA Resources Operator をインストールすると、場合によっては、Operator はアクティブとして表示されますが、リソーストポロジーエクスポーター (RTE) デーモンセット Pod のログには、RTE の設定が欠落していると表示されます。以下に例を示します。
Info: couldn't find configuration in "/etc/resource-topology-exporter/config.yaml"
Info: couldn't find configuration in "/etc/resource-topology-exporter/config.yaml"
このログメッセージは、必要な設定の kubeletconfig
がクラスターに適切に適用されなかったため、RTE configmap
が欠落していることを示しています。たとえば、次のクラスターには numaresourcesoperator-worker
configmap
カスタムリソース (CR) がありません。
oc get configmap
$ oc get configmap
出力例
NAME DATA AGE 0e2a6bd3.openshift-kni.io 0 6d21h kube-root-ca.crt 1 6d21h openshift-service-ca.crt 1 6d21h topo-aware-scheduler-config 1 6d18h
NAME DATA AGE
0e2a6bd3.openshift-kni.io 0 6d21h
kube-root-ca.crt 1 6d21h
openshift-service-ca.crt 1 6d21h
topo-aware-scheduler-config 1 6d18h
正しく設定されたクラスターでは、oc get configmap
は numaresourcesoperator-worker
configmap
CR も返します。
前提条件
-
OpenShift Container Platform CLI (
oc
) をインストールしている。 - cluster-admin 権限を持つユーザーとしてログインしている。
- NUMA Resources Operator をインストールし、NUMA 対応のセカンダリースケジューラーをデプロイします。
手順
次のコマンドを使用して、
kubeletconfig
のspec.machineConfigPoolSelector.matchLabels
とMachineConfigPool
(mcp
) ワーカー CR のmetadata.labels
の値を比較します。次のコマンドを実行して、
kubeletconfig
ラベルを確認します。oc get kubeletconfig -o yaml
$ oc get kubeletconfig -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
machineConfigPoolSelector: matchLabels: cnf-worker-tuning: enabled
machineConfigPoolSelector: matchLabels: cnf-worker-tuning: enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
mcp
ラベルを確認します。oc get mcp worker -o yaml
$ oc get mcp worker -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
labels: machineconfiguration.openshift.io/mco-built-in: "" pools.operator.machineconfiguration.openshift.io/worker: ""
labels: machineconfiguration.openshift.io/mco-built-in: "" pools.operator.machineconfiguration.openshift.io/worker: ""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cnf-worker-tuning: enabled
ラベルがMachineConfigPool
オブジェクトに存在しません。
MachineConfigPool
CR を編集して、不足しているラベルを含めます。次に例を示します。oc edit mcp worker -o yaml
$ oc edit mcp worker -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
labels: machineconfiguration.openshift.io/mco-built-in: "" pools.operator.machineconfiguration.openshift.io/worker: "" cnf-worker-tuning: enabled
labels: machineconfiguration.openshift.io/mco-built-in: "" pools.operator.machineconfiguration.openshift.io/worker: "" cnf-worker-tuning: enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ラベルの変更を適用し、クラスターが更新された設定を適用するのを待ちます。以下のコマンドを実行します。
検証
不足している
numaresourcesoperator-worker
configmap
CR が適用されていることを確認します。oc get configmap
$ oc get configmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow