12.5. 単一の NUMA ノードポリシーの設定
NUMA Resources Operator では、クラスター上に単一の NUMA ノードポリシーを設定する必要があります。この設定を行うには、パフォーマンスプロファイルを作成して適用するか、KubeletConfig を設定するという 2 つの方法があります。
単一の NUMA ノードポリシーの設定方法としては、パフォーマンスプロファイルを適用する方法が推奨されます。パフォーマンスプロファイルの作成には、Performance Profile Creator (PPC) ツールを使用できます。クラスター上にパフォーマンスプロファイルを作成すると、KubeletConfig や tuned プロファイルなどの他のチューニングコンポーネントが自動的に作成されます。
パフォーマンスプロファイルの作成の詳細は、「関連情報」セクションの「Performance Profile Creator の概要」を参照してください。
12.5.1. NUMA 対応スケジューラーの高可用性 (HA) の管理 リンクのコピーリンクがクリップボードにコピーされました!
高可用性の管理はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
NUMA Resources Operator は、NUMAResourcesScheduler カスタムリソース (CR) の spec.replicas フィールドに基づいて、NUMA 対応セカンダリースケジューラーの高可用性を管理します。デフォルトでは、NUMA Resources Operator は、コントロールプレーンノードごとに 1 つのスケジューラーレプリカ (最大 3 つのレプリカ) を作成して、HA モードを自動的に有効にします。
次のマニフェストは、このデフォルトの動作を示しています。レプリカ検出を自動的に有効にするには、replicas フィールドを省略します。
次のいずれかの方法を使用して、スケジューラーの動作を制御できます。
- レプリカの数をカスタマイズします。
- NUMA 対応スケジューリングを無効にします。
12.5.1.1. スケジューラーレプリカのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
定の数のスケジューラーレプリカを設定するには、NUMAResourcesScheduler カスタムリソースの spec.replicas フィールドを更新します。これにより、デフォルトの HA 動作がオーバーライドされます。
手順
例として、レプリカの数を 2 に設定する
custom-ha.yamlという名前の次の YAML を使用して、NUMAResourcesSchedulerCR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、NUMA 対応 Pod スケジューラーをデプロイします。
oc apply -f custom-ha.yaml
$ oc apply -f custom-ha.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.1.2. NUMA 対応スケジューリングの無効化 リンクのコピーリンクがクリップボードにコピーされました!
NUMA 対応スケジューラーを無効にして、実行中のすべてのスケジューラー Pod を停止し、新しいスケジューラー Pod が起動しないようにします。
手順
次の必要最小限の YAML を
nro-disable-scheduler.yamlファイルに保存します。spec.replicasフィールドを0に設定してスケジューラーを無効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、NUMA 対応 Pod スケジューラーを無効にします。
oc apply -f nro-disable-scheduler.yaml
$ oc apply -f nro-disable-scheduler.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.1.3. スケジューラーの高可用性 (HA) ステータスの検証 リンクのコピーリンクがクリップボードにコピーされました!
NUMA 対応スケジューラーが設定に基づいて期待される数のレプリカで実行されていることを確認するために、そのステータスを検証します。
手順
次のコマンドを実行して、スケジューラー Pod だけをリスト表示します。
oc get pods -n openshift-numaresources -l app=secondary-scheduler
$ oc get pods -n openshift-numaresources -l app=secondary-schedulerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力
デフォルトの HA モードを使用すると、Pod の数がコントロールプレーンノードの数と等しくなります。標準の HA OpenShift Container Platform クラスターには、通常 3 つのコントロールプレーンノードがあるため、3 つの Pod が表示されます。
NAME READY STATUS RESTARTS AGE secondary-scheduler-5b8c9d479d-2r4p5 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-k2f3p 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-q8c7b 1/1 Running 0 5m
NAME READY STATUS RESTARTS AGE secondary-scheduler-5b8c9d479d-2r4p5 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-k2f3p 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-q8c7b 1/1 Running 0 5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow - レプリカをカスタマイズ した場合、Pod の数は設定した値と一致します。
スケジューラーを無効化 した場合、このラベルが付いた実行中の Pod はありません。
注記NUMA 対応スケジューラーでは、レプリカの上限が 3 つに制限されています。Hosted Control Plane クラスターでは、スケジューラー Pod はホストクラスターのワーカーノードで実行されます。
次のコマンドを実行して、レプリカの数とステータスを確認します。
oc get deployment secondary-scheduler -n openshift-numaresources
$ oc get deployment secondary-scheduler -n openshift-numaresourcesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY UP-TO-DATE AVAILABLE AGE secondary-scheduler 3/3 3 3 5m
NAME READY UP-TO-DATE AVAILABLE AGE secondary-scheduler 3/3 3 3 5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow この出力の 3/3 は、期待される 3 つのレプリカのうち 3 つが準備完了状態であることを示しています。
より詳細な情報を得るには、次のコマンドを実行します。
oc describe deployment secondary-scheduler -n openshift-numaresources
$ oc describe deployment secondary-scheduler -n openshift-numaresourcesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Replicas行に、デプロイメントが 3 つのレプリカで設定されており、3 つとも更新済みで使用可能であることが表示されます。Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailableCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.2. パフォーマンスプロファイルの例 リンクのコピーリンクがクリップボードにコピーされました!
この YAML の例は、Performance Profile Creator (PPC) ツールを使用して作成されたパフォーマンスプロファイルを示しています。
- 1
- この値は、NUMA Resources Operator を設定する
MachineConfigPool値と一致する必要があります。たとえば、worker-cnfという名前のMachineConfigPoolオブジェクトを作成し、通信ワークロードを実行する一連のノードを指定します。MachineConfigPoolの値は、後ほど「NUMAResourcesOperator カスタムリソースの作成」で設定するNUMAResourcesOperatorCR のmachineConfigPoolSelector値と一致する必要があります。 - 2
- PPC ツールを実行する際に、
topology-manager-policy引数をsingle-numa-nodeに設定して、topologyPolicyフィールドがsingle-numa-nodeに設定されていることを確認します。注記Hosted Control Plane クラスターの場合、
machineConfigPoolSelectorは機能しません。代わりに、ノードの関連付けは指定されたNodePoolオブジェクトによって決定されます。
12.5.3. KubeletConfig CR の作成 リンクのコピーリンクがクリップボードにコピーされました!
単一の NUMA ノードポリシーの設定方法としては、パフォーマンスプロファイルを適用する方法が推奨されます。もう 1 つの方法は、次の手順に示すように、KubeletConfig カスタムリソース (CR) を作成して適用することです。
手順
マシンプロファイルの Pod アドミタンスポリシーを設定する
KubeletConfigカスタムリソース (CR) を作成します。以下の YAML を
nro-kubeletconfig.yamlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このラベルが、後ほど「NUMAResourcesOperator カスタムリソースの作成」で設定する
NUMAResourcesOperatorCR のmachineConfigPoolSelector設定と一致していることを確認します。 - 2
cpuManagerPolicyの場合、staticは小文字のsを使用する必要があります。- 3
- ノード上の CPU に基づいて調整します。
- 4
memoryManagerPolicyの場合、Staticは大文字のSを使用する必要があります。- 5
topologyManagerPolicyはsingle-numa-nodeに設定する必要があります。
注記Hosted Control Plane クラスターの場合、
machineConfigPoolSelector設定は機能しません。代わりに、ノードの関連付けは指定されたNodePoolオブジェクトによって決定されます。Hosted Control Plane クラスターにKubeletConfigを適用するには、設定を含むConfigMapを作成し、NodePoolのspec.configフィールド内でそのConfigMapを参照する必要があります。以下のコマンドを実行して
KubeletConfigCR を作成します。oc create -f nro-kubeletconfig.yaml
$ oc create -f nro-kubeletconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記パフォーマンスプロファイルまたは
KubeletConfigを適用すると、ノードの再起動が自動的にトリガーされます。再起動がトリガーされない場合は、ノードグループに対応するKubeletConfigのラベルを確認して、問題のトラブルシューティングを実施できます。