The Red Hat Multi-Arch Tuning Operator optimizes workload placement within multi-architecture compute clusters. Pods run on the compute architecture for which the containers declare support. Where Operators, Deployments, ReplicaSets, Jobs, CronJob, Pods don’t declare a nodeAffinity, in most cases, the Pods that are generate are updated with the node affinity so it lands on the supported (declared) CPU Architecture.
For version 1.1.0, the Red Hat Multi-Arch Team, @Prashanth684, @aleskandro, @AnnaZivkovic and IBM Power Systems team @pkenchap have worked together to give cluster administrators better control and flexibility. The feature adds a plugins field in ClusterPodPlacementConfig
and have build a first plugin called nodeAffinityScoring
.
Per the docs, the nodeAffinityScoring
plugin adds weights and influence to the scheduler with this process:
- Analyzing the Pod’s containers for the supported architectures
- Generate the Scheduling predicates for nodeAffinity, e.g., 75 weight on ppc64le
- Filter out nodes that do not meet the Pod requirements, using the Predicates
- Prioritizes the remaining nodes based on the architecture scores defined in the nodeAffinityScoring.platforms field.
To take advantages of this feature, use the following to asymmetrically load the Power nodes with work.
apiVersion: multiarch.openshift.io/v1beta1
kind: ClusterPodPlacementConfig
metadata:
name: cluster
spec:
logVerbosityLevel: Normal
namespaceSelector:
matchExpressions:
- key: multiarch.openshift.io/exclude-pod-placement
operator: Exists
plugins:
nodeAffinityScoring:
enabled: true
platforms:
- architecture: ppc64le
weight: 100
- architecture: amd64
weight: 50
Best wishes, and looking forward to hearing how you use the Multi-Arch Tuning Operator on IBM Power with Multi-Arch Compute.
References
- [RHOCP][TE] Multi-arch Tuning Operator: Cluster-wide architecture preferred/weighted affinity
- OpenShift 4.18 Docs: Chapter 4. Configuring multi-architecture compute machines on an OpenShift cluster
- OpenShift 4.18 Docs: 4.11. Managing workloads on multi-architecture clusters by using the Multiarch Tuning Operator
- Enhancement: Introducing the namespace-scoped PodPlacementConfig