×

The Multiarch Tuning Operator is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see Technology Preview Features Support Scope.

The Multiarch Tuning Operator enhances the operational experience within multi-architecture clusters, and single-architecture clusters that are migrating to a multi-architecture compute configuration.

This Operator implements the clusterpodplacementconfigs custom resource (CR) to support architecture-aware workload scheduling.

To enable architecture-aware workload scheduling, you must create the ClusterPodPlacementConfig object. When you create the ClusterPodPlacementConfig object, this Operator deploys an operand.

When a pod is created, the operand performs the following actions:

  1. Add the multiarch.openshift.io/scheduling-gate scheduling gate that prevents the scheduling of the pod.

  2. Compute a scheduling predicate that includes the supported architecture values for the kubernetes.io/arch label.

  3. Integrate the scheduling predicate as a nodeAffinity requirement in the pod specification.

  4. Remove the scheduling gate from the pod.

When the operand removes the scheduling gate, the pod enters the scheduling cycle. The workload is then scheduled on nodes based on the supported architectures.

The Technology Preview version of the Multiarch Tuning Operator does not support clusters with restricted network scenarios.

Installing the Multiarch Tuning Operator by using the CLI

You can install the Multiarch Tuning Operator by using the OpenShift CLI (oc).

Prerequisites
  • You have installed oc.

  • You have logged in to oc as a user with cluster-admin privileges.

Procedure
  1. Create a new project named openshift-multiarch-tuning-operator by running the following command:

    $ oc create ns openshift-multiarch-tuning-operator
  2. Create an OperatorGroup object:

    1. Create a YAML file with the configuration for creating an OperatorGroup object.

      Example YAML configuration for creating an OperatorGroup object
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-multiarch-tuning-operator
        namespace: openshift-multiarch-tuning-operator
      spec: {}
    2. Create the OperatorGroup object by running the following command:

      $ oc create -f <file_name> (1)
      1 Replace <file_name> with the name of the YAML file that contains the OperatorGroup object configuration.
  3. Create a Subscription object:

    1. Create a YAML file with the configuration for creating a Subscription object.

      Example YAML configuration for creating a Subscription object
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: openshift-multiarch-tuning-operator
        namespace: openshift-multiarch-tuning-operator
      spec:
        channel: tech-preview
        name: multiarch-tuning-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        installPlanApproval: Automatic
        startingCSV: multiarch-tuning-operator.v0.9.0
    2. Create the Subscription object by running the following command:

      $ oc create -f <file_name> (1)
      1 Replace <file_name> with the name of the YAML file that contains the Subscription object configuration.

For more details about configuring the Subscription object and OperatorGroup object, see "Installing from OperatorHub using the CLI".

Verification
  1. To verify that the Multiarch Tuning Operator is installed, run the following command:

    $ oc get csv -n openshift-multiarch-tuning-operator
    Example output
    NAME                               DISPLAY                     VERSION   REPLACES   PHASE
    multiarch-tuning-operator.v0.9.0   Multiarch Tuning Operator   0.9.0                Succeeded

    The installation is successful if the Operator is in Succeeded phase.

  2. Optional: To verify that the OperatorGroup object is created, run the following command:

    $ oc get operatorgroup -n openshift-multiarch-tuning-operator
    Example output
    NAME                                        AGE
    openshift-multiarch-tuning-operator-q8zbb   133m
  3. Optional: To verify that the Subscription object is created, run the following command:

    $ oc get subscription -n openshift-multiarch-tuning-operator
    Example output
    NAME                        PACKAGE                     SOURCE                              CHANNEL
    multiarch-tuning-operator   multiarch-tuning-operator   multiarch-tuning-operator-catalog   tech-preview

Installing the Multiarch Tuning Operator by using the web console

You can install the Multiarch Tuning Operator by using the OpenShift Container Platform web console.

Prerequisites
  • You have access to the cluster with cluster-admin privileges.

  • You have access to the OpenShift Container Platform web console.

Procedure
  1. Log in to the OpenShift Container Platform web console.

  2. Navigate to Operators → OperatorHub.

  3. Enter Multiarch Tuning Operator in the search field.

  4. Click Multiarch Tuning Operator.

  5. Select the Multiarch Tuning Operator version from the Version list.

  6. Click Install

  7. Set the following options on the Operator Installation page:

    1. Set Update Channel to tech-preview.

    2. Set Installation Mode to All namespaces on the cluster.

    3. Set Installed Namespace to Operator recommended Namespace or Select a Namespace.

      The recommended Operator namespace is openshift-multiarch-tuning-operator. If the openshift-multiarch-tuning-operator namespace does not exist, it is created during the operator installation.

      If you select Select a namespace, you must select a namespace for the Operator from the Select Project list.

    4. Update approval as Automatic or Manual.

      If you select Automatic updates, Operator Lifecycle Manager (OLM) automatically updates the running instance of the Multiarch Tuning Operator without any intervention.

      If you select Manual updates, OLM creates an update request. As a cluster administrator, you must manually approve the update request to update the Multiarch Tuning Operator to a newer version.

  8. Optional: Select the Enable Operator recommended cluster monitoring on this Namespace checkbox.

  9. Click Install.

Verification
  1. Navigate to OperatorsInstalled Operators.

  2. Verify that the Multiarch Tuning Operator is listed with the Status field as Succeeded in the openshift-multiarch-tuning-operator namespace.

Creating the ClusterPodPlacementConfig object

After installing the Multiarch Tuning Operator, you must create the ClusterPodPlacementConfig object. When you create this object, the Multiarch Tuning Operator deploys an operand that enables architecture-aware workload scheduling.

You can create only one instance of the ClusterPodPlacementConfig object.

Example ClusterPodPlacementConfig object configuration
apiVersion: multiarch.openshift.io/v1beta1
kind: ClusterPodPlacementConfig
metadata:
  name: cluster (1)
spec:
  logVerbosityLevel: Normal (2)
  namespaceSelector: (3)
    matchExpressions:
      - key: multiarch.openshift.io/exclude-pod-placement
        operator: DoesNotExist
1 You must set this field value to cluster.
2 Optional: You can set the field value to Normal, Debug, Trace, or TraceAll. The value is set to Normal by default.
3 Optional: You can configure the namespaceSelector to select the namespaces in which the Multiarch Tuning Operator’s pod placement operand must process the nodeAffinity of the pods. All namespaces are considered by default.

In this example, the operator field value is set to DoesNotExist. Therefore, if the key field value (multiarch.openshift.io/exclude-pod-placement) is set as a label in a namespace, the operand does not process the nodeAffinity of the pods in that namespace. Instead, the operand processes the nodeAffinity of the pods in namespaces that do not contain the label.

If you want the operand to process the nodeAffinity of the pods only in specific namespaces, you can configure the namespaceSelector as follows:

namespaceSelector:
  matchExpressions:
    - key: multiarch.openshift.io/include-pod-placement
      operator: Exists

In this example, the operator field value is set to Exists. Therefore, the operand processes the nodeAffinity of the pods only in namespaces that contain the multiarch.openshift.io/include-pod-placement label.

The namespaces starting with openshift-, kube-, and hypershift- are excluded.

Creating the ClusterPodPlacementConfig object by using the CLI

To deploy the pod placement operand that enables architecture-aware workload scheduling, you can create the ClusterPodPlacementConfig object by using the OpenShift CLI (oc).

Prerequisites
  • You have installed oc.

  • You have logged in to oc as a user with cluster-admin privileges.

  • You have installed the Multiarch Tuning Operator.

Procedure
  1. Create a ClusterPodPlacementConfig object YAML file:

    Example ClusterPodPlacementConfig object configuration
    apiVersion: multiarch.openshift.io/v1beta1
    kind: ClusterPodPlacementConfig
    metadata:
      name: cluster
    spec:
      logVerbosityLevel: Normal
      namespaceSelector:
        matchExpressions:
          - key: multiarch.openshift.io/exclude-pod-placement
            operator: DoesNotExist
  2. Create the ClusterPodPlacementConfig object by running the following command:

    $ oc create -f <file_name> (1)
    1 Replace <file_name> with the name of the ClusterPodPlacementConfig object YAML file.
Verification
  • To check that the ClusterPodPlacementConfig object is created, run the following command:

    $ oc get clusterpodplacementconfig
    Example output
    NAME      AGE
    cluster   29s

Creating the ClusterPodPlacementConfig object by using the web console

To deploy the pod placement operand that enables architecture-aware workload scheduling, you can create the ClusterPodPlacementConfig object by using the OpenShift Container Platform web console.

Prerequisites
  • You have access to the cluster with cluster-admin privileges.

  • You have access to the OpenShift Container Platform web console.

  • You have installed the Multiarch Tuning Operator.

Procedure
  1. Log in to the OpenShift Container Platform web console.

  2. Navigate to OperatorsInstalled Operators.

  3. On the Installed Operators page, click Multiarch Tuning Operator.

  4. Click the Cluster Pod Placement Config tab.

  5. Select either Form view or YAML view.

  6. Configure the ClusterPodPlacementConfig object parameters.

  7. Click Create.

  8. Optional: If you want to edit the ClusterPodPlacementConfig object, perform the following actions:

    1. Click the Cluster Pod Placement Config tab.

    2. Select Edit ClusterPodPlacementConfig from the options menu.

    3. Click YAML and edit the ClusterPodPlacementConfig object parameters.

    4. Click Save.

Verification
  • On the Cluster Pod Placement Config page, check that the ClusterPodPlacementConfig object is in the Ready state.

Deleting the ClusterPodPlacementConfig object by using the CLI

You can create only one instance of the ClusterPodPlacementConfig object. If you want to re-create this object, you must first delete the existing instance.

You can delete this object by using the OpenShift CLI (oc).

Prerequisites
  • You have installed oc.

  • You have logged in to oc as a user with cluster-admin privileges.

Procedure
  1. Log in to the OpenShift CLI (oc).

  2. Delete the ClusterPodPlacementConfig object by running the following command:

    $ oc delete clusterpodplacementconfig cluster
Verification
  • To check that the ClusterPodPlacementConfig object is deleted, run the following command:

    $ oc get clusterpodplacementconfig
    Example output
    No resources found
Next steps
  • After deleting the ClusterPodPlacementConfig object, ensure that none of the pods are in the Pending phase due to the SchedulingGated reason. You can delete the scheduling gate from all of the gated pods by running the following command:

    $ oc get pods -A -l multiarch.openshift.io/scheduling-gate=gated -o json  | jq 'del(.items[].spec.schedulingGates[] | select(.name=="multiarch.openshift.io/scheduling-gate"))' | oc apply -f -

Deleting the ClusterPodPlacementConfig object by using the web console

You can create only one instance of the ClusterPodPlacementConfig object. If you want to re-create this object, you must first delete the existing instance.

You can delete this object by using the OpenShift Container Platform web console.

Prerequisites
  • You have access to the cluster with cluster-admin privileges.

  • You have access to the OpenShift Container Platform web console.

  • You have created the ClusterPodPlacementConfig object.

Procedure
  1. Log in to the OpenShift Container Platform web console.

  2. Navigate to OperatorsInstalled Operators.

  3. On the Installed Operators page, click Multiarch Tuning Operator.

  4. Click the Cluster Pod Placement Config tab.

  5. Select Delete ClusterPodPlacementConfig from the options menu.

  6. Click Delete.

Verification
  • On the Cluster Pod Placement Config page, check that the ClusterPodPlacementConfig object has been deleted.

Next steps
  • After deleting the ClusterPodPlacementConfig object, ensure that none of the pods are in the Pending phase due to the SchedulingGated reason. You can delete the scheduling gate from all the gated pods by running the following command in the OpenShift CLI (oc):

    $ oc get pods -A -l multiarch.openshift.io/scheduling-gate=gated -o json  | jq 'del(.items[].spec.schedulingGates[] | select(.name=="multiarch.openshift.io/scheduling-gate"))' | oc apply -f -

Uninstalling the Multiarch Tuning Operator by using the CLI

You can uninstall the Multiarch Tuning Operator by using the OpenShift CLI (oc).

Prerequisites
  • You have installed oc.

  • You have logged in to oc as a user with cluster-admin privileges.

  • You deleted the ClusterPodPlacementConfig object.

    You must delete the ClusterPodPlacementConfig object before uninstalling the Multiarch Tuning Operator. Uninstalling the Operator without deleting the ClusterPodPlacementConfig object can lead to unexpected behavior.

Procedure
  1. Get the Subscription object name for the Multiarch Tuning Operator by running the following command:

    $ oc get subscription.operators.coreos.com -n <namespace> (1)
    1 Replace <namespace> with the name of the namespace where you want to uninstall the Multiarch Tuning Operator.
    Example output
    NAME                                  PACKAGE                     SOURCE             CHANNEL
    openshift-multiarch-tuning-operator   multiarch-tuning-operator   redhat-operators   tech-preview
  2. Get the currentCSV value for the Multiarch Tuning Operator by running the following command:

    $ oc get subscription.operators.coreos.com <subscription_name> -n <namespace> -o yaml | grep currentCSV (1)
    1 Replace <subscription_name> with the Subscription object name. For example: openshift-multiarch-tuning-operator. Replace <namespace> with the name of the namespace where you want to uninstall the Multiarch Tuning Operator.
    Example output
    currentCSV: multiarch-tuning-operator.v0.9.0
  3. Delete the Subscription object by running the following command:

    $ oc delete subscription.operators.coreos.com <subscription_name> -n <namespace> (1)
    1 Replace <subscription_name> with the Subscription object name. Replace <namespace> with the name of the namespace where you want to uninstall the Multiarch Tuning Operator.
    Example output
    subscription.operators.coreos.com "openshift-multiarch-tuning-operator" deleted
  4. Delete the CSV for the Multiarch Tuning Operator in the target namespace using the currentCSV value by running the following command:

    $ oc delete clusterserviceversion <currentCSV_value> -n <namespace> (1)
    1 Replace <currentCSV> with the currentCSV value for the Multiarch Tuning Operator. For example: multiarch-tuning-operator.v0.9.0. Replace <namespace> with the name of the namespace where you want to uninstall the Multiarch Tuning Operator.
    Example output
    clusterserviceversion.operators.coreos.com "multiarch-tuning-operator.v0.9.0" deleted
Verification
  • To verify that the Multiarch Tuning Operator is uninstalled, run the following command:

    $ oc get csv -n <namespace> (1)
    1 Replace <namespace> with the name of the namespace where you have uninstalled the Multiarch Tuning Operator.
    Example output
    No resources found in openshift-multiarch-tuning-operator namespace.

Uninstalling the Multiarch Tuning Operator by using the web console

You can uninstall the Multiarch Tuning Operator by using the OpenShift Container Platform web console.

Prerequisites
  • You have access to the cluster with cluster-admin permissions.

  • You deleted the ClusterPodPlacementConfig object.

    You must delete the ClusterPodPlacementConfig object before uninstalling the Multiarch Tuning Operator. Uninstalling the Operator without deleting the ClusterPodPlacementConfig object can lead to unexpected behavior.

Procedure
  1. Log in to the OpenShift Container Platform web console.

  2. Navigate to Operators → OperatorHub.

  3. Enter Multiarch Tuning Operator in the search field.

  4. Click Multiarch Tuning Operator.

  5. Click the Details tab.

  6. From the Actions menu, select Uninstall Operator.

  7. When prompted, click Uninstall.

Verification
  1. Navigate to OperatorsInstalled Operators.

  2. On the Installed Operators page, verify that the Multiarch Tuning Operator is not listed.