Skip to main content

Hello all,

I am learning about Kubernetes by trying out FME Flow on Azure Kubernetes Services. I’ve got Flow running on the default AKS setup of one agentpool and one userpool, using an Azure postgresql database. Small configuration-changes in the .yaml and doing a helm upgrade work as expected.

Now I try to follow this safe-support article on engine assignment and job routing  and I fail to get it to work (on 2024.1+ versions of Flow).

Just as described in the article, I used ‘nodeSelector’  and a tag to assign engine-pods to a node-pool.

The ‘new’ engine-pods on the node-pool I created do not schedule. They remain pending.
The message is:

0/4 nodes are available:
1 node(s) didn''t match pod affinity rules,
1 node(s) had untolerated taint {CriticalAddonsOnly: true},
2 node(s) didn't match Pod's node affinity/selector.
preemption: 0/4 nodes are available: 4 Preemption is not helpful for scheduling..

The pods should schedule on the first of the three mentioned node-pool. Apparently the ‘selector’ matches, but not the ‘pod affinity’. I did not use ‘affinity’ in my .yaml for none of the pods, and all but this one do schedule happy.

When I do kubectl get pod -n fmeflow -o yaml engine-himem-group--somenumber]

I do find the following entry for it’s affinity.

spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: safe.k8s.fmeflow.component
operator: In
values:
- core
topologyKey: kubernetes.io/hostname

The engine-pods running on the other node-pool do have the same rule. It is the only thing I find on affinity in the configuration. I have done no conscious action to add this rule.

Comparing the node-pool configurations (in the azure-GUI), I do not find any differences which strike me as important related to this.

I hope one of you can give me a nudge in the right direction to solve this.


Thanks for taking notice,

Kind regards,

Martin
 

Be the first to reply!

Reply