-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
4.18
-
None
-
Quality / Stability / Reliability
-
False
-
-
None
-
Important
-
None
-
All
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem:
I have an OpenShift Pipeline that builds container images on x86 and s390x. After updating to Pipelines operator version 1.19, when I run the pipeline, an affinity assistant pod is created despite my tektonconfig having "disableAffinityAssistant" to true.
Version-Release number of selected component (if applicable):
OpenShift Pipelines Operator Version 1.19
OpenShift Version 4.18.4
How reproducible:
Reproduced in multiple namespaces and on multiple clusters
Steps to Reproduce:
1. Install multi-arch cluster with OpenShift Pipelines, ensure "disableAffinityAssistant" field is set to "true" in the tektonconfig config object
2. Create pipeline that builds images on x86 and s390x
3. Run the pipeline specifying the build pods must run on their respective architectures.
4.
Actual results:
Notice that an affinity-assistant pod is created and that only the build pod on the same architecture as the affinity-assistant pod is run. All other architecture pods are left in pending.
$ oc get pods -n petstore
NAME READY STATUS RESTARTS AGE
affinity-assistant-e96f667797-0 1/1 Running 0 33m
el-petstore-build-event-listener-7c9b9fcd56-nw7t8 1/1 Running 0 19h
multiarch-petstore-build-rs14s6-fetch-repository-pod 0/1 Completed 0 33m
multiarch-petstore-build-rs14s6-s390x-build-pod 0/1 Completed 0 33m
multiarch-petstore-build-rs14s6-x86-build-pod 0/1 Pending 0 33m
$ oc get tektonconfig config -n openshift-pipelines -o yaml | grep -i affinity
disable-affinity-assistant: true
$ oc get pod -n petstore multiarch-petstore-build-rs14s6-x86-build-pod -o json | jq '.status.conditions[0].message'
"0/11 nodes are available: 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }, 4 node(s) didn't match Pod's node affinity/selector, 4 node(s) didn't match pod affinity rules. preemption: 0/11 nodes are available: 11 Preemption is not helpful for scheduling."
$ oc get pod -n petstore multiarch-petstore-build-rs14s6-x86-build-pod -o json | jq '.spec.affinity'
{
"podAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": [
{
"labelSelector": {
"matchLabels": {
"app.kubernetes.io/component": "affinity-assistant",
"app.kubernetes.io/instance": "affinity-assistant-e96f667797"
}
},
"topologyKey": "kubernetes.io/hostname"
}
]
}
}
Expected results:
Affinity assistant pod is not created and pods within a pipeline can be scheduled across multiple architectures
Additional info:
If this should be opened against a repository in the OpenShift Pipelines GitHub, please feel free to point me in the right direction