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 を使用した OperatorHub からのインストール」を参照してください。
検証
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
3.11.2. Web コンソールを使用した Multiarch Tuning Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、Multiarch Tuning Operator をインストールできます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - 検索フィールドに Multiarch Tuning Operator と入力します。
- Multiarch Tuning Operator をクリックします。
- Version リストから Multiarch Tuning Operator のバージョンを選択します。
- Install をクリックします。
Operator Installation ページで次のオプションを設定します。
- Update Channel を stable に設定します。
- Installation Mode を All namespaces on the cluster に設定します。
Installed Namespace を、Operator recommended Namespace か Select a Namespace に設定します。
推奨される Operator namespace は
openshift-multiarch-tuning-operatorです。openshift-multiarch-tuning-operatornamespace が存在しない場合は、Operator のインストール中に作成されます。Select a namespace を選択した場合は、Select Project リストから Operator の namespace を選択する必要があります。
Update approval で Automatic または Manual を選択します。
Automatic 更新を選択すると、Operator Lifecycle Manager (OLM) が管理者の介入なしで Multiarch Tuning Operator の実行中のインスタンスを自動的に更新します。
Manual 更新を選択すると、OLM は更新要求を作成します。クラスター管理者は、Multiarch Tuning Operator を新しいバージョンに更新するために、更新要求を手動で承認する必要があります。
- オプション: Enable Operator recommended cluster monitoring on this Namespace チェックボックスを選択します。
- Install をクリックします。
検証
-
Operators
Installed Operators に移動します。 -
Multiarch Tuning Operator が、
openshift-multiarch-tuning-operatornamespace の Status フィールドに Succeeded としてリストされていることを確認します。
3.11.3. Multiarch Tuning Operator Pod ラベルとアーキテクチャーサポートの概要 リンクのコピーリンクがクリップボードにコピーされました!
Multiarch Tuning Operator をインストールした後、クラスター内のワークロードに対するマルチアーキテクチャーのサポートを確認できます。Pod ラベルを使用して、アーキテクチャーの互換性に基づき Pod を識別および管理できます。これらのラベルは、アーキテクチャーサポートに関する情報を提供するために、新しく作成された Pod に自動的に設定されます。
次の表は、Pod の作成時に Multiarch Tuning Operator が追加するラベルを説明しています。
| ラベル | 説明 |
|---|---|
|
| Pod は複数のアーキテクチャーをサポートします。 |
|
| Pod は単一のアーキテクチャーのみサポートします。 |
|
|
Pod は |
|
|
Pod は |
|
|
Pod は |
|
|
Pod は |
|
| Operator は、アーキテクチャーのノードアフィニティー要件を設定しました。 |
|
| Operator はノードアフィニティー要件を設定しませんでした。たとえば、Pod にすでにアーキテクチャーのノードアフィニティーがある場合、Multiarch Tuning Operator はこのラベルを Pod に追加します。 |
|
| Pod にはゲートがあります。 |
|
| Pod ゲートが削除されました。 |
|
| ノードアフィニティー要件のビルド時にエラーが発生しました。 |
|
| Operator が Pod のアーキテクチャー優先設定を指定しました。 |
|
|
ユーザーがすでに |
3.11.4. ClusterPodPlacementConfig オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
Multiarch Tuning Operator をインストールしたら、ClusterPodPlacementConfig オブジェクトを作成する必要があります。このオブジェクトを作成すると、Multiarch Tuning Operator が、アーキテクチャーを考慮したワークロードスケジューリングを可能にするオペランドをデプロイします。
ClusterPodPlacementConfig オブジェクトのインスタンスは 1 つだけ作成できます。
ClusterPodPlacementConfig オブジェクトの設定例
apiVersion: multiarch.openshift.io/v1beta1
kind: ClusterPodPlacementConfig
metadata:
name: cluster
spec:
logVerbosityLevel: Normal
namespaceSelector:
matchExpressions:
- key: multiarch.openshift.io/exclude-pod-placement
operator: DoesNotExist
plugins:
nodeAffinityScoring:
enabled: true
platforms:
- architecture: amd64
weight: 100
- architecture: arm64
weight: 50
- 1
- このフィールドの値を
clusterに設定する必要があります。 - 2
- オプション: フィールドの値を
Normal、Debug、Trace、またはTraceAllに設定できます。デフォルトでは、値はNormalに設定されています。 - 3
- オプション:
namespaceSelectorを設定すると、Multiarch Tuning Operator の Pod 配置オペランドによって Pod のnodeAffinityを処理する必要がある namespace を選択できます。デフォルトではすべての namespace が考慮されます。 - 4
- オプション: アーキテクチャーを考慮したワークロードスケジューリング用のプラグインのリストを含めます。
- 5
- オプション: このプラグインを使用すると、Pod 配置用のアーキテクチャー優先設定を指定できます。有効にすると、スケジューラーによって、まず Pod の要件を満たさないノードが除外されます。次に、
nodeAffinityScoring.platformsフィールドで定義されたアーキテクチャースコアに基づいて、残りのノードに優先順位が付けられます。 - 6
- オプション:
nodeAffinityScoringプラグインを有効にするには、このフィールドをtrueに設定します。デフォルト値はfalseです。 - 7
- オプション: アーキテクチャーとそれに対応するスコアのリストを定義します。
- 8
- スコアを割り当てるノードアーキテクチャーを指定します。スケジューラーは、設定したアーキテクチャースコアと Pod 仕様で定義されたスケジューリング要件に基づいて、Pod を配置するノードを優先順位付けします。許可される値は、
arm64、amd64、ppc64le、またはs390xです。 - 9
- アーキテクチャーにスコアを割り当てます。このフィールドの値は、
1(最低優先度) から100(最高優先度) の範囲で設定する必要があります。スケジューラーは、このスコアを使用して Pod を配置するノードを優先順位付けし、スコアが高いアーキテクチャーのノードを優先します。
この例では、operator フィールドの値が DoesNotExist に設定されています。したがって、key フィールドの値 (multiarch.openshift.io/exclude-pod-placement) が namespace のラベルとして設定されている場合、オペランドはその namespace 内の Pod の nodeAffinity を処理しません。代わりに、オペランドはこのラベルを含まない namespace 内の Pod の nodeAffinity を処理します。
オペランドで特定の namespace 内の Pod の nodeAffinity のみを処理する場合は、次のように namespaceSelector を設定できます。
namespaceSelector:
matchExpressions:
- key: multiarch.openshift.io/include-pod-placement
operator: Exists
この例では、operator フィールドの値が Exists に設定されています。したがって、オペランドは、multiarch.openshift.io/include-pod-placement ラベルを含む namespace 内の Pod の nodeAffinity のみを処理します。
この Operator は、kube- で始まる namespace 内の Pod を除外します。また、コントロールプレーンノードでスケジュールされることが予想される Pod も除外されます。
3.11.4.1. CLI を使用した ClusterPodPlacementConfig オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
アーキテクチャーを考慮したワークロードのスケジューリングを可能にする Pod 配置オペランドをデプロイするには、OpenShift CLI (oc) を使用して ClusterPodPlacementConfig オブジェクトを作成します。
前提条件
-
ocがインストールされている。 -
cluster-admin権限を持つユーザーとしてocにログインしている。 - Multiarch Tuning Operator がインストールされている。
手順
ClusterPodPlacementConfigオブジェクトの YAML ファイルを作成します。ClusterPodPlacementConfigオブジェクトの設定例apiVersion: multiarch.openshift.io/v1beta1 kind: ClusterPodPlacementConfig metadata: name: cluster spec: logVerbosityLevel: Normal namespaceSelector: matchExpressions: - key: multiarch.openshift.io/exclude-pod-placement operator: DoesNotExist plugins: nodeAffinityScoring: enabled: true platforms: - architecture: amd64 weight: 100 - architecture: arm64 weight: 50次のコマンドを実行して
ClusterPodPlacementConfigオブジェクトを作成します。$ oc create -f <file_name>1 - 1
<file_name>は、ClusterPodPlacementConfigオブジェクトの YAML ファイルの名前に置き換えます。
検証
ClusterPodPlacementConfigオブジェクトが作成されたことを確認するには、次のコマンドを実行します。$ oc get clusterpodplacementconfig出力例
NAME AGE cluster 29s
3.11.4.2. Web コンソールを使用した ClusterPodPlacementConfig オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
アーキテクチャーを考慮したワークロードのスケジューリングを可能にする Pod 配置オペランドをデプロイするには、OpenShift Container Platform Web コンソールを使用して ClusterPodPlacementConfig オブジェクトを作成します。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Multiarch Tuning Operator がインストールされている。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 - Installed Operators ページで、Multiarch Tuning Operator をクリックします。
- Cluster Pod Placement Config タブをクリックします。
- Form view または YAML view のいずれかを選択します。
-
ClusterPodPlacementConfigオブジェクトのパラメーターを設定します。 - Create をクリックします。
オプション:
ClusterPodPlacementConfigオブジェクトを編集する場合は、次の操作を実行します。- Cluster Pod Placement Config タブをクリックします。
- オプションメニューから Edit ClusterPodPlacementConfig を選択します。
-
YAML をクリックし、
ClusterPodPlacementConfigオブジェクトのパラメーターを編集します。 - Save をクリックします。
検証
-
Cluster Pod Placement Config ページで、
ClusterPodPlacementConfigオブジェクトがReady状態であることを確認します。
3.11.5. CLI を使用した ClusterPodPlacementConfig オブジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
ClusterPodPlacementConfig オブジェクトのインスタンスは 1 つだけ作成できます。このオブジェクトを再作成する場合は、まず既存のインスタンスを削除する必要があります。
OpenShift CLI (oc) を使用してこのオブジェクトを削除できます。
前提条件
-
ocがインストールされている。 -
cluster-admin権限を持つユーザーとしてocにログインしている。
手順
-
OpenShift CLI (
oc) にログインします。 次のコマンドを実行して
ClusterPodPlacementConfigオブジェクトを削除します。$ oc delete clusterpodplacementconfig cluster
検証
ClusterPodPlacementConfigオブジェクトが削除されたことを確認するには、次のコマンドを実行します。$ oc get clusterpodplacementconfig出力例
No resources found
3.11.6. Web コンソールを使用した ClusterPodPlacementConfig オブジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
ClusterPodPlacementConfig オブジェクトのインスタンスは 1 つだけ作成できます。このオブジェクトを再作成する場合は、まず既存のインスタンスを削除する必要があります。
OpenShift Container Platform Web コンソールを使用してこのオブジェクトを削除できます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
-
ClusterPodPlacementConfigオブジェクトを作成した。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 - Installed Operators ページで、Multiarch Tuning Operator をクリックします。
- Cluster Pod Placement Config タブをクリックします。
- オプションメニューから Delete ClusterPodPlacementConfig を選択します。
- Delete をクリックします。
検証
-
Cluster Pod Placement Config ページで、
ClusterPodPlacementConfigオブジェクトが削除されていることを確認します。
3.11.7. CLI を使用した Multiarch Tuning Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、Multiarch Tuning Operator をアンインストールできます。
前提条件
-
ocがインストールされている。 -
cluster-admin権限を持つユーザーとしてocにログインしている。 ClusterPodPlacementConfigオブジェクトを削除した。重要Multiarch Tuning Operator をアンインストールする前に、
ClusterPodPlacementConfigオブジェクトを削除する必要があります。ClusterPodPlacementConfigオブジェクトを削除せずに Operator をアンインストールすると、予期しない動作が発生する可能性があります。
手順
次のコマンドを実行して、Multiarch Tuning Operator の
Subscriptionオブジェクト名を取得します。$ oc get subscription.operators.coreos.com -n <namespace>1 - 1
<namespace>は、Multiarch Tuning Operator をアンインストールする namespace の名前に置き換えます。
出力例
NAME PACKAGE SOURCE CHANNEL openshift-multiarch-tuning-operator multiarch-tuning-operator redhat-operators stable次のコマンドを実行して、Multiarch Tuning Operator の
currentCSV値を取得します。$ oc get subscription.operators.coreos.com <subscription_name> -n <namespace> -o yaml | grep currentCSV1 - 1
<subscription_name>をSubscriptionオブジェクト名に置き換えます。たとえば、openshift-multiarch-tuning-operatorです。<namespace>は、Multiarch Tuning Operator をアンインストールする namespace の名前に置き換えます。
出力例
currentCSV: multiarch-tuning-operator.<version>次のコマンドを実行して、
Subscriptionオブジェクトを削除します。$ oc delete subscription.operators.coreos.com <subscription_name> -n <namespace>1 - 1
<subscription_name>をSubscriptionオブジェクト名に置き換えます。<namespace>は、Multiarch Tuning Operator をアンインストールする namespace の名前に置き換えます。
出力例
subscription.operators.coreos.com "openshift-multiarch-tuning-operator" deleted次のコマンドを実行して、
currentCSV値を使用してターゲット namespace 内の Multiarch Tuning Operator の CSV を削除します。$ oc delete clusterserviceversion <currentCSV_value> -n <namespace>1 - 1
<currentCSV>は、Multiarch Tuning Operator のcurrentCSV値に置き換えます。たとえば、multiarch-tuning-operator.<version>です。<namespace>は、Multiarch Tuning Operator をアンインストールする namespace の名前に置き換えます。
出力例
clusterserviceversion.operators.coreos.com "multiarch-tuning-operator.<version>" deleted
検証
Multiarch Tuning Operator がアンインストールされたことを確認するには、次のコマンドを実行します。
$ oc get csv -n <namespace>1 - 1
<namespace>は、Multiarch Tuning Operator をアンインストールした namespace の名前に置き換えます。
出力例
No resources found in openshift-multiarch-tuning-operator namespace.
3.11.8. Web コンソールを使用した Multiarch Tuning Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、Multiarch Tuning Operator をアンインストールできます。
前提条件
-
cluster-admin権限でクラスターにアクセスできます。 ClusterPodPlacementConfigオブジェクトを削除した。重要Multiarch Tuning Operator をアンインストールする前に、
ClusterPodPlacementConfigオブジェクトを削除する必要があります。ClusterPodPlacementConfigオブジェクトを削除せずに Operator をアンインストールすると、予期しない動作が発生する可能性があります。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - 検索フィールドに Multiarch Tuning Operator と入力します。
- Multiarch Tuning Operator をクリックします。
- Details タブをクリックします。
- Actions メニューから、Uninstall Operator を選択します。
- プロンプトが表示されたら、Uninstall をクリックします。
検証
-
Operators
Installed Operators に移動します。 - Installed Operator ページで、Multiarch Tuning Operator がリストされていないことを確認します。