5.2. OpenShift Virtualization コンポーネントのノードの指定
ベアメタルノード上の仮想マシンのデフォルトのスケジューリングは適切です。任意で、ノードの配置ルールを設定して、OpenShift Virtualization Operator、ワークロード、およびコントローラーをデプロイするノードを指定できます。
OpenShift Virtualization のインストール後に一部のコンポーネントに対してノード配置ルールを設定できますが、ワークロードに対してノード配置ルールを設定する場合は仮想マシンが存在できません。
5.2.1. OpenShift Virtualization コンポーネントのノード配置ルールについて リンクのコピーリンクがクリップボードにコピーされました!
ノード配置ルールは次のタスクに使用できます。
- 仮想マシンは、仮想化ワークロードを対象としたノードにのみデプロイしてください。
- Operator はインフラストラクチャーノードにのみデプロイメントします。
- ワークロード間の分離を維持します。
オブジェクトに応じて、以下のルールタイプを 1 つ以上使用できます。
nodeSelector
- このフィールドで指定したキーと値のペアでラベル付けされたノードで Pod をスケジュールできるようにします。ノードには、リスト表示されたすべてのペアに一致するラベルがなければなりません。
affinity
- より表現的な構文を使用して、ノードと Pod に一致するルールを設定できます。アフィニティーを使用すると、ルールの適用方法に追加のニュアンスを持たせることができます。たとえば、ルールが要件ではなく設定であると指定できます。ルールが優先の場合、ルールが満たされていない場合でも Pod はスケジュールされます。
tolerations
- 一致する taint を持つノードに Pod をスケジュールすることを許容します。ノードに taint が適用されると、そのノードはその taint を許容する Pod のみを受け入れます。
5.2.2. ノード配置ルールの適用 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して Subscription
、HyperConverged
、または HostPathProvisioner
オブジェクトを編集することで、ノード配置ルールを適用できます。
前提条件
-
oc
CLI ツールがインストールされている。 - クラスター管理者の権限でログインしています。
手順
次のコマンドを実行して、デフォルトのエディターでオブジェクトを編集します。
oc edit <resource_type> <resource_name> -n openshift-cnv
$ oc edit <resource_type> <resource_name> -n openshift-cnv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。
5.2.3. ノード配置ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
Subscription
、HyperConverged
、または HostPathProvisioner
オブジェクトを編集することで、OpenShift Virtualization コンポーネントのノード配置ルールを指定できます。
5.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:NoSchedule
taint のラベルが付けられているノードに OpenShift Virtualization Operator をデプロイします。このノードには、一致する toleration を持つ Pod のみがスケジュールされます。
5.2.3.2. HyperConverged オブジェクトノード配置ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization がそのコンポーネントをデプロイするノードを指定するには、OpenShift Virtualization のインストール時に作成する HyperConverged カスタムリソース (CR) ファイルに nodePlacement
オブジェクトを編集できます。
nodeSelector
ルールを使用した HyperConverged
オブジェクトの例
affinity
ルールを使用した HyperConverged
オブジェクトの例
tolerations
ルールを備えた HyperConverged
オブジェクトの例
- 1
- OpenShift Virtualization コンポーネント用に予約されているノードには、
key = virtualization:NoSchedule
taint のラベルが付けられています。予約済みノードには、一致する toleration を持つ Pod のみがスケジュールされます。
5.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
というラベルの付いたノードに配置されます。