Skip to content

fix(ironic): Fix anti affinity rules for default and update replica count#2131

Open
nicholaskuechler wants to merge 1 commit into
mainfrom
PUC-1750-20260701-1511
Open

fix(ironic): Fix anti affinity rules for default and update replica count#2131
nicholaskuechler wants to merge 1 commit into
mainfrom
PUC-1750-20260701-1511

Conversation

@nicholaskuechler

Copy link
Copy Markdown
Collaborator

The ironic-api deployment included anti-affinity rules (under 'default' section), and uses 4 replicas, but we only have 3 noddes. This combination with preferredDuringSchedulingIgnoredDuringExecution prevents our ability to deploy the ironic-api as it’s just stuck forever scheduling due to never meeting these combined conditions.

Comment thread components/ironic/values.yaml
Comment thread components/ironic/values.yaml

@cardoe cardoe left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reasoning doesn't reconcile with the Kubernetes docs.

anti:
type:
default: preferredDuringSchedulingIgnoredDuringExecution
default: ""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To quote the Kubernetes docs:

preferredDuringSchedulingIgnoredDuringExecution: The scheduler tries to find a node that meets the rule. If a matching node is not available, the scheduler still schedules the Pod.

You've said this prevents us from scheduling workloads but the Kubernetes docs say otherwise.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've also read the docs but what they say doesn't match our reality. Our reality is that we literally can't complete an ironic-api deployment without manual intervention. The pods are stuck in pending for at least 30 minutes after which time I intervene. I've been feeding the logs/output/etc in to LLM over the past few weeks but it hasn't found anything conclusive either.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which environment did you see that problem in?

❯ kubectl --context uc_dfw3_prod -o wide get pods | grep ironic-api
ironic-api-9ffd89855-4tngk                                        1/1     Running     0             5d6h    10.64.52.40    infra3   <none>           <none>
ironic-api-9ffd89855-f98nd                                        1/1     Running     0             5d6h    10.64.50.216   infra1   <none>           <none>
ironic-api-9ffd89855-n9s6r                                        1/1     Running     0             5d6h    10.64.51.243   infra2   <none>           <none>
ironic-api-9ffd89855-tpbj4                                        1/1     Running     0             5d6h    10.64.50.142   infra1   <none>           <none>

or in other words, how to reproduce this?

@nicholaskuechler nicholaskuechler force-pushed the PUC-1750-20260701-1511 branch from 240dcd7 to c8b4b64 Compare July 6, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants