You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add a new preflight check to the deprecation for the containerd 1.y and kubernetes 1.34+ integration. #3229
should we can just print a warning, like we do for containerd pause version mismatch in the CRI configuration or introduce a complete preflight check e.g. ContainerdVersion?
are there plans to remove the fallback as per the kep? that's an important detail.
should we can just print a warning, like we do for containerd pause version mismatch in the CRI configuration or introduce a complete preflight check e.g. ContainerdVersion?
i am leaning towards having a ContainerdVersion which somewhat aligns with the Swap check that we have.
are there plans to remove the fallback as per the kep? that's an important detail.
KEP indicates that the related fallback behavior will be removed in 1.36. but the blog said 1.36 is the last version which support containerd 1.y. I'm a little confused
are there plans to remove the fallback as per the kep? that's an important detail.
KEP indicates that the related fallback behavior will be removed in 1.36. but the blog said 1.36 is the last version which support containerd 1.y. I'm a little confused
changed the title [-]Add a new preflight check to the deprecation for the containerd 1.y and kubenretes 1.34+ integration.[/-][+]Add a new preflight check to the deprecation for the containerd 1.y and kubernetes 1.34+ integration.[/+]on Aug 28, 2025
We shouldn't set the cgroupDriver field in 1.36 or higher.
IIUC, for 1.36 you want to make kubeadm fail on preflight if the RuntimeConfig is missing.
but what happens if the user ignores the error (--ignore-preflight-error), would the kubelet still run on an older CRI implementation that doesn't have RuntimeConfig? if so, the cgroup driver from config would matter, no?
Should kubeadm remove the cgroupDriver field from configmap during the upgrade phase?
i think it's better for kubeadm to stop setting this field only if the field gets deprecated / removed from the KubeletConfiguration and/or if it starts causing errors.
IIUC, for 1.36 you want to make kubeadm fail on preflight if the RuntimeConfig is missing. but what happens if the user ignores the error (--ignore-preflight-error), would the kubelet still run on an older CRI implementation that doesn't have RuntimeConfig? if so, the cgroup driver from config would matter, no?
Yes, it matters if the preflight check is ignored/skipped. In that case (the CRI runtime does provide the cgroupDriver setting for kubelet) the kubelet falls back to using the cgroupDriver field from kubelet config.
Should kubeadm remove the cgroupDriver field from configmap during the upgrade phase?
i think it's better for kubeadm to stop setting this field only if the field gets deprecated / removed from the KubeletConfiguration and/or if it starts causing errors.
I'm inclined to agree with this, don't remove until it's removed (or made nop)from kubelet. OTOH, kubeadm wouldn't need to set the field for containerd => 2.0.
though if containerd 2.0 is running the field is already a no-op, and from 1.36 it will be a no-op for any running cluster, so maybe it does make sense to stop setting it in 1.36
though if containerd 2.0 is running the field is already a no-op, and from 1.36 it will be a no-op for any running cluster, so maybe it does make sense to stop setting it in 1.36
+1.
For v1.35, we may keep the cgroupDriver in kubelet configmap.
Activity
neolit123 commentedon Aug 15, 2025
should we can just print a warning, like we do for containerd pause version mismatch in the CRI configuration or introduce a complete preflight check e.g. ContainerdVersion?
neolit123 commentedon Aug 15, 2025
it's the kubelet version that should be checked and not kubernetesVersion, correct?
carlory commentedon Aug 15, 2025
Yes, it is kubelet.
carlory commentedon Aug 15, 2025
before 1.37, it should be a warnning, but since 1.37, it should be an error. kubelet calls cri to get cgroup driver name.
carlory commentedon Aug 15, 2025
There is a fallback to use cgroupDriver from kubelet config https://github.com/kubernetes/kubernetes/blob/master/cmd/kubelet/app/server.go#L1400. If the fallback is removed, it should be an error.
neolit123 commentedon Aug 15, 2025
are there plans to remove the fallback as per the kep? that's an important detail.
i am leaning towards having a ContainerdVersion which somewhat aligns with the Swap check that we have.
neolit123 commentedon Aug 15, 2025
ok, in that case we need to carefully plan everything. FWIW removing the flag and config option will break a lot of setups.
carlory commentedon Aug 15, 2025
KEP indicates that the related fallback behavior will be removed in 1.36. but the blog said 1.36 is the last version which support containerd 1.y. I'm a little confused
carlory commentedon Aug 15, 2025
+1
carlory commentedon Aug 19, 2025
the blog is updated. 1.35 is last version.
[-]Add a new preflight check to the deprecation for the containerd 1.y and kubenretes 1.34+ integration.[/-][+]Add a new preflight check to the deprecation for the containerd 1.y and kubernetes 1.34+ integration.[/+]4 remaining items
carlory commentedon Oct 31, 2025
We shouldn't set the cgroupDriver field in 1.36 or higher.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/componentconfigs/kubelet.go#L193-L198
Should kubeadm remove the cgroupDriver field from configmap during the upgrade phase?
cc @pacoxu @neolit123
It seems to depend on how the kubelet handles the cgroupDriver field when it is provided in the kubelet configuration.
cc @marquiz @haircommander
neolit123 commentedon Oct 31, 2025
IIUC, for 1.36 you want to make kubeadm fail on preflight if the RuntimeConfig is missing.
but what happens if the user ignores the error (--ignore-preflight-error), would the kubelet still run on an older CRI implementation that doesn't have RuntimeConfig? if so, the cgroup driver from config would matter, no?
i think it's better for kubeadm to stop setting this field only if the field gets deprecated / removed from the KubeletConfiguration and/or if it starts causing errors.
marquiz commentedon Oct 31, 2025
Yes, it matters if the preflight check is ignored/skipped. In that case (the CRI runtime does provide the cgroupDriver setting for kubelet) the kubelet falls back to using the
cgroupDriverfield from kubelet config.I'm inclined to agree with this, don't remove until it's removed (or made nop)from kubelet. OTOH, kubeadm wouldn't need to set the field for containerd => 2.0.
Thoughts @haircommander
haircommander commentedon Oct 31, 2025
though if containerd 2.0 is running the field is already a no-op, and from 1.36 it will be a no-op for any running cluster, so maybe it does make sense to stop setting it in 1.36
pacoxu commentedon Nov 3, 2025
+1.
For v1.35, we may keep the cgroupDriver in kubelet configmap.
k8s-triage-robot commentedon Oct 18, 2026
The Kubernetes project currently lacks enough contributors to adequately respond to all issues.
This bot triages un-triaged issues according to the following rules:
lifecycle/staleis appliedlifecycle/stalewas applied,lifecycle/rottenis appliedlifecycle/rottenwas applied, the issue is closedYou can:
/remove-lifecycle stale/closePlease send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale
carlory commentedon Oct 20, 2026
/remove-lifecycle stale