4.2. OpenShift Virtualization コンポーネントのノードの指定
ベアメタルノード上の仮想マシン (VM) のデフォルトスケジューリングは、そのままでも機能します。任意で、ノードの配置ルールを設定して、OpenShift Virtualization Operator、ワークロード、およびコントローラーをデプロイするノードを指定できます。
OpenShift Virtualization のインストール後に一部のコンポーネントに対してノード配置ルールを設定できますが、ワークロードに対してノード配置ルールを設定する場合は仮想マシンが存在できません。
4.2.1. OpenShift Virtualization コンポーネントのノード配置ルールについて リンクのコピーリンクがクリップボードにコピーされました!
ノード配置ルールを使用すると、仮想化ワークロード用のノードにのみ仮想マシンをデプロイしたり、インフラストラクチャーノードにのみ Operator をデプロイしたり、ワークロード間の分離を維持したりすることができます。
オブジェクトに応じて、以下のルールタイプを 1 つ以上使用できます。
nodeSelector- このフィールドで指定したキーと値のペアでラベル付けされたノードで Pod をスケジュールできるようにします。ノードには、リスト表示されたすべてのペアに一致するラベルがなければなりません。
affinity- より表現的な構文を使用して、ノードと Pod に一致するルールを設定できます。アフィニティーを使用すると、ルールの適用方法に追加のニュアンスを持たせることができます。たとえば、ルールが要件ではなく設定であると指定できます。ルールが優先の場合、ルールが満たされていない場合でも Pod はスケジュールされます。
tolerations- 一致する taint を持つノードに Pod をスケジュールすることを許容します。ノードに taint が適用されると、そのノードはその taint を許容する Pod のみを受け入れます。
4.2.2. ノード配置ルールの適用 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して Subscription、HyperConverged、または HostPathProvisioner オブジェクトを編集することで、ノード配置ルールを適用できます。
前提条件
-
ocCLI ツールがインストールされている。 - クラスター管理者の権限でログインしています。
手順
次のコマンドを実行して、デフォルトのエディターでオブジェクトを編集します。
oc edit <resource_type> <resource_name> -n openshift-cnv
$ oc edit <resource_type> <resource_name> -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。
4.2.3. ノード配置ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
Subscription、HyperConverged、または HostPathProvisioner オブジェクトを編集することで、OpenShift Virtualization コンポーネントのノード配置ルールを指定できます。
4.2.3.1. サブスクリプションオブジェクトノード配置ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
OLM が OpenShift Virtualization Operator をデプロイするノードを指定するには、OpenShift Virtualization のインストール時に Subscription オブジェクトを編集します。
現時点では、Web コンソールを使用して Subscription オブジェクトのノードの配置ルールを設定することはできません。
Subscription オブジェクトは、affinity ノードの配置ルールをサポートしていません。
nodeSelector ルールを含む Subscription オブジェクトの例:
- 1
- OLM は、
example.io/example-infra-key = example-infra-valueというラベルのノードに OpenShift Virtualization Operator をデプロイします。
tolerations ルールを含む Subscription オブジェクトの例:
- 1
- OLM は、
key = virtualization:NoScheduletaint のラベルが付けられているノードに OpenShift Virtualization Operator をデプロイします。このノードには、一致する toleration を持つ Pod のみがスケジュールされます。
4.2.3.2. HyperConverged オブジェクトノード配置ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization がそのコンポーネントをデプロイするノードを指定するには、OpenShift Virtualization のインストール時に作成する HyperConverged カスタムリソース (CR) ファイルに nodePlacement オブジェクトを編集できます。
nodeSelector ルールを含む HyperConverged オブジェクトの例:
affinity ルールを含む HyperConverged オブジェクトの例:
tolerations ルールを含む HyperConverged オブジェクトの例:
- 1
- OpenShift Virtualization コンポーネント用に予約されているノードには、
key = virtualization:NoScheduletaint のラベルが付けられています。予約済みノードには、一致する toleration を持つ Pod のみがスケジュールされます。
4.2.3.3. HostPathProvisioner オブジェクトノード配置ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
HostPathProvisioner オブジェクトは、直接編集することも、Web コンソールを使用して編集することもできます。
ホストパスプロビジョナーと OpenShift Virtualization コンポーネントを同じノード上でスケジュールする必要があります。スケジュールしない場合は、ホストパスプロビジョナーを使用する仮想化 Pod を実行できません。仮想マシンを実行することはできません。
ホストパスプロビジョナー (HPP) ストレージクラスを使用して仮想マシン (VM) をデプロイした後、ノードセレクターを使用して同じノードからホストパスプロビジョナー Pod を削除できます。ただし、少なくともその特定のノードは、まずその変更を元に戻し、仮想マシンを削除しようとする前に Pod が実行されるのを待つ必要があります。
ノード配置ルールを設定するには、ホストパスプロビジョナーのインストール時に作成する HostPathProvisioner オブジェクトの spec.workload フィールドに nodeSelector、affinity、または tolerations を指定します。
nodeSelector ルールを含む HostPathProvisioner オブジェクトの例:
- 1
- ワークロードは、
example.io/example-workloads-key = example-workloads-valueというラベルの付いたノードに配置されます。