The ClusterPodPlacementConfig object
After installing the Multiarch Tuning Operator, you must create a ClusterPodPlacementConfig object. The object instructs the Operator to deploy its operand, which enables architecture-aware workload scheduling across your cluster.
The ClusterPodPlacementConfig object supports two optional plugins:
-
The
node affinity scoringplugin patches pods to set soft preferences, using weighted affinities, for the architectures specified by the user. Pods are more likely to be scheduled on nodes running architectures with higher weights. -
The
exec format error monitorplugin detectsENOEXECerrors, which occur when a pod attempts to execute a binary incompatible with the architecture of the node. When enabled, this plugin generates events in the affected event stream of the pod. The plugin triggers anExecFormatErrorsDetectedPrometheus alert if one or moreENOEXECerrors are detected within the last six hours. These errors can result from incorrect architecture node selectors, invalid image metadata that affects architecture-aware workload scheduling, an incorrect binary in an image, or an incompatible binary injected at runtime.
|
|
You can create only one instance of the |
ClusterPodPlacementConfig object configurationapiVersion: multiarch.openshift.io/v1beta1
kind: ClusterPodPlacementConfig
metadata:
name: cluster
spec:
logVerbosity: 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
execFormatErrorMonitor:
enabled: true
fallbackArchitecture: amd64
where:
metadata.name-
Specifies the name of the object. You must set this parameter to
cluster. spec.logVerbosity-
Optional parameter. Specifies the log verbosity level. You can set the field value to
Normal,Debug,Trace, orTraceAll. The value is set toNormalby default. spec.namespaceSelector-
Optional parameter. You can configure the
namespaceSelectorto select the namespaces in which the Multiarch Tuning Operator’s pod placement operand must process thenodeAffinityof the pods. All namespaces are considered by default. spec.plugins.nodeAffinityScoring.enabled-
Optional parameter. You can enable the node affinity scoring plugin to set architecture preferences for pod placement. When enabled, the scheduler first filters out nodes that do not meet the pod’s requirements. Then, it prioritizes the remaining nodes based on the architecture scores defined in the
nodeAffinityScoring.platformsfield. The default value is false. spec.plugins.nodeAffinityScoring.platforms-
Optional parameter. Defines a list of architectures and their corresponding scores. The scheduler prioritizes nodes for pod placement based on the architecture scores that you set and the scheduling requirements defined in the pod specification.
spec.plugins.nodeAffinityScoring.platforms.architecture-
Specifies the architecture for the node affinity scoring plugin. Accepted values are
arm64,amd64,ppc64le, ors390x. spec.plugins.nodeAffinityScoring.platforms.weight-
Specifies the weight for the architecture you specified in the
spec.plugins.nodeAffinityScoring.platforms.architectureparameter. The value must be configured in the range of1(lowest priority) to100(highest priority). The scheduler uses this score to prioritize nodes for pod placement, favoring nodes with architectures that have higher scores. spec.plugins.execFormatErrorMonitor.enabled-
Optional parameter. Set this field to
trueto enable theexecFormatErrorMonitorplugin. When enabled, the plugin detectsENOEXECerrors, caused when a pod executes a binary incompatible with the node’s architecture. The plugin generates events in the affected pods, and triggers theExecFormatErrorsDetectedPrometheus alert if one or more errors are found in the last six hours. spec.fallbackArchitecture-
Optional parameter. Specifies an architecture where pods are scheduled if the image inspector cannot determine the architecture of the image. Valid values are
"",arm64,amd64,ppc64le, ors390x. The value is set to""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.
|
|
This Operator excludes pods in namespaces starting with |