Description
edit by neolit123
action items:
- adjust all kubelet skew constants / checks for init/join/upgrade.
kubeadm: adjust kubeadm skew policy for upgrades kubernetes#120825 - update the "create a cluster with kubeadm" page where our skew is documented. it must be for the release-1.29 k/website branch.
v1.29: kubeadm skew policy for kubelet is n-3 website#43769
- [ ] add the -f flag forupgrade node
. this is a nice to have, we missed 1.29, so it can be added in 1.30.
TODO
- [ ] add one new e2e test, that upgrades with the new kubelet skew without -f.
(this is actually difficult because -f is required in our CI; it's used for kubeadm to allow upgrading to a pre-release / CI artifact)
TODO
- [ ] in 1.32 remove--ignore-preflight-errors=KubeletVersion
from the kinder kubelet skew jobs see this note for details
TODO
UPDATE
not needed
#2944 (review)
how was 1.32 established (UPDATE note needed)
kubeadm 1.29 is the first release that supports the new skew
kubeadm 1.29 supports deploying kubelet 1.29, 1.28, 1.27, 1.26
k8s (kubeadm) support window is 3x releases at a time
target kubeadm version to drop the preflight = when 1.28 goes out of support / 1.32 is released.
note: the kubeadm/CP skew is ignored in this case even if the kubelet/CP skew is the actual target of this change
FEATURE REQUEST:
with kubernetes 1.28 the skew policy for control plane components has been updated, and now you can have control plane components that's three versions ahead than kubelets.
However kubeadm has still a n-1 skew policy. Such policy prevents to skip some kubelet upgrates of worker nodes, that could save a lot of time during upgrades in large clusters.
edit(neolit123): KEP LINK:
Support Oldest Node And Newest Control Plane
https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/3935-oldest-node-newest-control-plane
Versions
kubeadm version (use kubeadm version
): 1.28
Environment:
- Kubernetes version (use
kubectl version
): 1.28 - Cloud provider or hardware configuration: N/A
- OS (e.g. from /etc/os-release): N/A
- Kernel (e.g.
uname -a
): N/A - Container runtime (CRI) (e.g. containerd, cri-o): N/A
- Container networking plugin (CNI) (e.g. Calico, Cilium): N/A
- Others:
What happened?
during kubeadm upgrade apply the upgrade processes si stopped with the following error
- There are kubelets in this cluster that are too old that have these versions [v1.x.yy]
What you expected to happen?
To be able to upgrade the control plane to 1.28 even if the cluster has 1.26 or 1.25 kubletes.