kubernetes-sigs/kubespray

Develop a custom ansible strategy plugin to perform graceful upgrade in a true rolling fashion

Open

#12929 opened on Jan 29, 2026

View on GitHub
 (11 comments) (0 reactions) (0 assignees)HTML (10,380 stars) (4,419 forks)batch import
help wantedkind/featurelifecycle/frozen

Description

What would you like to be added

Basically: https://github.com/ansible-collections/community.general/issues/10920

(Upstreaming the strategy into community.general would also work)

Once we switch to collection only (#12227 ) we'll be able to handle ansible plugins more easily.

WARNING: This is not an easy task, and requires to dive deep into Ansible internals and do a fair bit of Python. This not at all a "good first issue"

Why is this needed

There is 2 purpose for this strategy:

  • faster cluster upgrade, because there is no longer a "all nodes in a batch wait for all other nodes" bottleneck.
  • make possible cluster upgrades with bigger "batch size" (currently, a PodDisruptionBudbget can block your upgrade if enoug eligible nodes for a deployment are in the same batch. With that scenario, some of the nodes where the eviction succeded would finish instead of waiting of the rest of the batch, allowing pods to be scheduled on them and the other node drain to succeed).

/lifecycle frozen /help

Contributor guide