Unable to upgrade to enterprise-2.15.2: node(s) didn't match pod anti-affinity rules


I am trying to upgrade from stable-2.14.10 to enterprise-2.15.2, and the Linkerd pods (destination, identity and proxy-injector) are stuck in Pending state, with the following message:

node(s) didn't match pod anti-affinity rules.

What can I do about this?



Hi Pascal,

It sounds like you may be setting the enablePodAntiAffinity: true flag in your values (either explicitly or implicitly, depending on which steps you’re taking to upgrade), and you don’t have enough nodes to handle the request.

Can you provide the following when you get a chance:

  1. steps your using to migrate from OSS to enterprise
  2. Values (files or runtime settings) you’re using

Once I have those I can better advise on how to clear it up. In the meantime, as a general setting, you can try passing in enablePodAntiAffinity: false in the values and see if that gets around the issue you’re seeing.

Hello Alen,

I install/upgrade Linkerd with the --ha flag, for High Availability.

I realized that the Linkerd deployments are set to 3 replicas and affinity rules that state “no more than 1 pod per node”, and I have 3 nodes, so this is why it was stuck. Scaling down to 2 replicas fixed the issue.


Aaah gotcha. Glad you were able to get it resolved, though I would expect it to work still if all 3 nodes are schedulable (assuming one is not a tainted orchestrator node or something like that).

Yep, all 3 nodes are schedulable.