6.7. マシンセットリソースのインフラストラクチャーノードへの割り当て
インフラストラクチャーマシンセットの作成後、worker
および infra
ロールが新規の infra ノードに適用されます。infra
ロールが割り当てられたノードは、worker
ロールも適用されている場合でも、環境を実行するために必要なサブスクリプションの合計数にはカウントされません。
ただし、infra ノードに worker ロールが割り当てられている場合は、ユーザーのワークロードが誤って infra ノードに割り当てられる可能性があります。これを回避するには、taint を、制御する必要のある Pod の infra ノードおよび toleration に適用できます。
6.7.1. taint および toleration を使用したインフラストラクチャーノードのワークロードのバインディング リンクのコピーリンクがクリップボードにコピーされました!
infra
および worker
ロールが割り当てられているインフラストラクチャーノードがある場合、ユーザーのワークロードがこれに割り当てられないようにノードを設定する必要があります。
インフラストラクチャーノード用に作成されたデュアル infra,worker
ラベルを保持し、テイントおよび容認(Toleration)を使用してユーザーのワークロードがスケジュールされているノードを管理することを推奨します。ノードから worker
ラベルを削除する場合には、カスタムプールを作成して管理する必要があります。master
または worker
以外のラベルが割り当てられたノードは、カスタムプールなしには MCO で認識されません。worker
ラベルを維持すると、カスタムラベルを選択するカスタムプールが存在しない場合に、ノードをデフォルトのワーカーマシン設定プールで管理できます。infra
ラベルは、サブスクリプションの合計数にカウントされないクラスターと通信します。
前提条件
-
追加の
MachineSet
を OpenShift Container Platform クラスターに設定します。
手順
テイントをインフラストラクチャーノードに追加し、ユーザーのワークロードをこれにスケジュールできないようにします。
ノードに taint があるかどうかを判別します。
oc describe nodes <node_name>
$ oc describe nodes <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、ノードに taint があることを示しています。次の手順に進み、toleration を Pod に追加してください。
ユーザーワークロードをスケジューリングできないように、taint を設定していない場合は、以下を実行します。
oc adm taint nodes <node_name> <key>=<value>:<effect>
$ oc adm taint nodes <node_name> <key>=<value>:<effect>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc adm taint nodes node1 node-role.kubernetes.io/infra=reserved:NoSchedule
$ oc adm taint nodes node1 node-role.kubernetes.io/infra=reserved:NoSchedule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、Pod 仕様を編集してテイントを追加できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの例では、テイントを
node-role.kubernetes.io/infra
キーとNoSchedule
テイントの効果を持つnode1
にテイントを配置します。effect がNoSchedule
のノードは、taint を容認する Pod のみをスケジュールしますが、既存の Pod はノードにスケジュールされたままになります。NoSchedule
テイントをインフラストラクチャーノードに追加した場合、そのノードのデーモンセットによって制御される Pod はmisscheduled
としてマークされます。Red Hat ナレッジベースソリューション誤って、Pod を削除するか、または Pod に容認を追加する 必要が
あり ます。Operator によって管理されるデーモンセットオブジェクトに容認を追加できないことに注意してください。注記Descheduler が使用されると、ノードのテイントに違反する Pod はクラスターからエビクトされる可能性があります。
ルーター、レジストリー、およびモニタリングのワークロードなどのインフラストラクチャーノードでスケジュールする必要のある Pod に容認を追加します。直前の例を参照し、以下の容認を
Pod
オブジェクト仕様に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow こ toleration は、
oc adm taint
コマンドで作成された taint と一致します。この容認のある Pod はインフラストラクチャーノードにスケジュールできます。注記OLM でインストールされた Operator の Pod をインフラストラクチャーノードに移動することは常に可能な訳ではありません。Operator Pod を移動する機能は、各 Operator の設定によって異なります。
- スケジューラーを使用して Pod をインフラストラクチャーノードにスケジュールします。詳細は、Controlling Pod placement using the scheduler を参照してください。
- 新しいインフラストラクチャーノードで必要でない、または属さないワークロードを削除します。OpenShift Container Platform インフラストラクチャーコンポーネントのインフラストラクチャーノードでサポートされるワークロードのリストを参照してください。