Upgrades¶
The upgrade subcommand automates Kubernetes upgrades following kubeadm upgrade procedures.
It supports local node-by-node execution and remote orchestration over SSH.
Constraints¶
- Target version must be
MAJOR.MINOR.PATCH, for example1.33.2. - Kubernetes only supports
+1minor version upgrades at a time. - Patch upgrades within the same minor version are allowed.
- Downgrades are not supported.
Local mode¶
Run on the first control-plane node:
curl -fsSL https://github.com/MuNeNiCK/setup-k8s/releases/latest/download/setup-k8s.sh | sudo sh -s -- \
upgrade --kubernetes-version 1.33.2 --first-control-plane
Run on additional control-plane nodes and workers:
curl -fsSL https://github.com/MuNeNiCK/setup-k8s/releases/latest/download/setup-k8s.sh | sudo sh -s -- \
upgrade --kubernetes-version 1.33.2
For a single-node cluster:
curl -fsSL https://github.com/MuNeNiCK/setup-k8s/releases/latest/download/setup-k8s.sh | sudo sh -s -- \
upgrade --kubernetes-version 1.33.2 --first-control-plane --skip-drain
Remote mode¶
curl -fsSLO https://github.com/MuNeNiCK/setup-k8s/releases/latest/download/setup-k8s.sh
sh setup-k8s.sh \
upgrade \
--control-planes 10.0.0.1,10.0.0.2 \
--workers 10.0.0.3,10.0.0.4 \
--kubernetes-version 1.33.2 \
--ssh-key ~/.ssh/id_rsa
Remote flow:
- Transfer setup-k8s.sh to all nodes.
- Check current cluster version and validate upgrade constraints.
- Run
kubeadm upgrade plan. - Drain, upgrade, and uncordon each control-plane node.
- Drain, upgrade, and uncordon each worker node.
- Verify cluster state with
kubectl get nodes.
Automatic rollback¶
Remote upgrade records the kubeadm version of each node before upgrading it. If a node upgrade fails, the node runs setup-k8s.sh upgrade --rollback-to <previous version>, which reinstalls kubeadm, kubelet, and kubectl at that version and restarts kubelet; the node is then uncordoned. kubeadm restores its own control-plane manifests when kubeadm upgrade fails.
The same command can be run manually on a node:
sudo sh setup-k8s.sh upgrade --rollback-to 1.36.6
Disable rollback for debugging:
setup-k8s.sh upgrade \
--control-planes 10.0.0.1 \
--kubernetes-version 1.33.2 \
--no-rollback
Multi-version upgrades¶
Use --auto-step-upgrade to upgrade across multiple minor versions:
setup-k8s.sh upgrade \
--control-planes 10.0.0.1,10.0.0.2 \
--kubernetes-version 1.33.2 \
--auto-step-upgrade \
--ssh-key ~/.ssh/id_rsa
The script computes intermediate steps and runs a full cluster upgrade plus health check for each step.