3.11. Multiarch Tuning Operator を使用してマルチアーキテクチャークラスター上のワークロードを管理する
Multiarch Tuning Operator は、マルチアーキテクチャークラスター内およびマルチアーキテクチャー環境に移行するシングルアーキテクチャークラスター内のワークロード管理を最適化します。
アーキテクチャーを考慮したワークロードスケジューリングにより、スケジューラーは Pod イメージのアーキテクチャーに一致するノードに Pod を配置できます。
スケジューラーは、新しい Pod のノードへの配置を決定する際に、デフォルトでは Pod のコンテナーイメージのアーキテクチャーを考慮しません。
アーキテクチャーを考慮したワークロードのスケジューリングを有効にするには、ClusterPodPlacementConfig オブジェクトを作成する必要があります。ClusterPodPlacementConfig オブジェクトを作成すると、Multiarch Tuning Operator は、アーキテクチャーを考慮したワークロードスケジューリングをサポートするために必要なオペランドをデプロイします。ClusterPodPlacementConfig オブジェクトの nodeAffinityScoring プラグインを使用して、ノードアーキテクチャーのクラスター全体のスコアを設定することもできます。nodeAffinityScoring プラグインを有効にすると、スケジューラーによって、互換性のあるアーキテクチャーを持つノードがフィルタリングされてから、スコアが最も高いノードに Pod が配置されます。
Pod が作成されると、オペランドは次のアクションを実行します。
-
Pod のスケジュールを防止するスケジューリングゲート
multiarch.openshift.io/scheduling-gateを追加します。 -
kubernetes.io/archラベルでサポートされているアーキテクチャー値を含むスケジューリング述語を計算します。 -
スケジューリング述語を Pod 仕様の
nodeAffinity要件として統合します。 - Pod からスケジューリングゲートを削除します。
オペランドの次の動作に注意してください。
-
nodeSelectorフィールドがすでにワークロードのkubernetes.io/archラベルで設定されている場合、オペランドはそのワークロードのnodeAffinityフィールドを更新しません。 -
nodeSelectorフィールドがワークロードのkubernetes.io/archラベルで設定されていない場合、オペランドはそのワークロードのnodeAffinityフィールドを更新します。ただしnodeAffinityフィールドでは、オペランドはkubernetes.io/archラベルで設定されていないノードセレクター条件のみ更新します。 -
nodeNameフィールドがすでに設定されている場合、Multiarch Tuning Operator は Pod を処理しません。 -
Pod が DaemonSet によって所有されている場合、オペランドは
nodeAffinityフィールドを更新しません。 -
kubernetes.io/archラベルにnodeSelectorまたはnodeAffinityとpreferredAffinityの両方のフィールドが設定されている場合、オペランドはnodeAffinityフィールドを更新しません。 -
kubernetes.io/archラベルにnodeSelectorまたはnodeAffinityフィールドのみが設定され、nodeAffinityScoringプラグインが無効になっている場合、オペランドはnodeAffinityフィールドを更新しません。 -
nodeAffinity.preferredDuringSchedulingIgnoredDuringExecutionフィールドに、kubernetes.io/archラベルに基づいてノードにスコアを割り当てる条件がすでに含まれている場合、オペランドはnodeAffinityScoringプラグイン内の設定を無視します。
3.11.1. CLI を使用した Multiarch Tuning Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、Multiarch Tuning Operator をインストールできます。
前提条件
-
ocがインストールされている。 -
cluster-admin権限を持つユーザーとしてocにログインしている。
手順
次のコマンドを実行して、
openshift-multiarch-tuning-operatorという名前の新しいプロジェクトを作成します。$ oc create ns openshift-multiarch-tuning-operatorOperatorGroupオブジェクトを作成します。OperatorGroupオブジェクトを作成するための設定を含む YAML ファイルを作成します。OperatorGroupオブジェクトを作成するための YAML 設定の例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-multiarch-tuning-operator namespace: openshift-multiarch-tuning-operator spec: {}以下のコマンドを実行して
OperatorGroupオブジェクトを作成します。$ oc create -f <file_name>1 - 1
<file_name>は、OperatorGroupオブジェクトの設定を含む YAML ファイルの名前に置き換えます。
Subscriptionオブジェクトを作成します。Subscriptionオブジェクトを作成するための設定を含む YAML ファイルを作成します。Subscriptionオブジェクトを作成するための YAML 設定の例apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-multiarch-tuning-operator namespace: openshift-multiarch-tuning-operator spec: channel: stable name: multiarch-tuning-operator source: redhat-operators sourceNamespace: openshift-marketplace installPlanApproval: Automatic startingCSV: multiarch-tuning-operator.<version>以下のコマンドを実行して
Subscriptionオブジェクトを作成します。$ oc create -f <file_name>1 - 1
<file_name>は、Subscriptionオブジェクトの設定を含む YAML ファイルの名前に置き換えます。
Subscription オブジェクトと OperatorGroup オブジェクトの設定の詳細は、「CLI を使用してソフトウェアカタログからインストールする」を参照してください。
検証
Multiarch Tuning Operator がインストールされていることを確認するには、次のコマンドを実行します。
$ oc get csv -n openshift-multiarch-tuning-operator出力例
NAME DISPLAY VERSION REPLACES PHASE multiarch-tuning-operator.<version> Multiarch Tuning Operator <version> multiarch-tuning-operator.1.0.0 SucceededOperator が
Succeededフェーズにある場合、インストールは成功しています。オプション:
OperatorGroupオブジェクトが作成されたことを確認するには、次のコマンドを実行します。$ oc get operatorgroup -n openshift-multiarch-tuning-operator出力例
NAME AGE openshift-multiarch-tuning-operator-q8zbb 133mオプション:
Subscriptionオブジェクトが作成されたことを確認するには、次のコマンドを実行します。$ oc get subscription -n openshift-multiarch-tuning-operator出力例
NAME PACKAGE SOURCE CHANNEL multiarch-tuning-operator multiarch-tuning-operator redhat-operators stable