Skip to content

adjust the kubeadm / kubelet skew policy #2924

Closed
@NorthFuture

Description

@NorthFuture

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 for upgrade 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/controlplanearea/kubeletkind/featureCategorizes issue or PR as related to a new feature.lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions