Skip to main content

I'm trying to have a distributed deployment of my standard engine & the dynamic engines in azure kubernetes. I created 2 nodepools and referenced the tag of the 2nd nodepool in the values.yaml file. The dynamic engine has a nodeSelector: {agentpool: nodepooldynamic} field that says this engine has to go on a specific nodepool. However, when I update my deployment it says the pods affinity rules are not met since it only wants to schedule engine pods on the same nodepool as there is a core pod available. Although, the engine pod immediately launches even before the core pod is available. Is the presence of the core pod hard coded or is it possible to change this?

Hi @marnickcle​ 

I believe that affinity rule will only be set if the data volume is set to ReadWriteOnce

 since that means it can only be bound to a single node and therefore we need to schedule all components on the same node. If the volume is ReadWriteMany then that should not get set and engines can go on any host.

Changing that worked for me!


Certainly! In an Azure Kubernetes DevOps Deployment, it is possible to schedule FME Flow engines on nodes where there isn't an FME Flow core scheduled. However, your specific issue is likely related to the pod affinity rules.

The presence of the core pod isn't hard-coded, but the affinity rules may be causing the engine pods to be scheduled in the same nodepool as the core pod. You can modify these rules to meet your requirements.

To achieve a distributed deployment, you should review and update the affinity and anti-affinity rules in your deployment configuration. By correctly configuring these rules, you can guide Kubernetes to schedule your standard engine and dynamic engines on the desired nodepools, without the necessity for the core pod to be present on the same nodepool.

 

I hope this will help you.

 

Regards

Lija


Reply