-
Notifications
You must be signed in to change notification settings - Fork 716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
kubelet-config-x.y ConfigMap logic improvements #1582
Comments
Maybe we can get the cluster version through # kubectl describe cm kubeadm-config -n kube-system
Name: kubeadm-config
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
====
ClusterConfiguration:
----
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta1
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: ""
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.13.0
networking:
dnsDomain: cluster.local
podSubnet: ""
serviceSubnet: 10.96.0.0/12
scheduler: {}
ClusterStatus:
----
apiEndpoints:
test-01:
advertiseAddress: 192.168.137.139
bindPort: 6443
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterStatus
Events: <none> The |
@SataQiu but the issue has deeper roots and we possibly need to discuss all the implications here. |
kubelet's component config is a versioned API. It is at beta level now and I don't expect catastrophic incompatibility issues between a couple of consecutive kubelet versions, especially on join. |
/assign |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
/lifecycle frozen |
For beta in 1.24, is |
i think i mean clearing docs / code comments. |
Oops. Got it. |
looks like kubernetes/kubernetes#108027 broke https://k8s-testgrid.appspot.com/sig-cluster-lifecycle-kubeadm#kubeadm-kinder-latest-on-1-23 that is a skew test.
the fix here is to make test/e2e_kubeadm/kubelet_config_test.go tollerate both the old and new object names in the 1.23 branch of k/k. i will send a PR later. |
The CI is green again. v1.24 tasks are finished and the milestone can move to 1.25. |
the feature gate was removed for 1.26. this is complete. |
tracking issue in k/e + KEP: kubernetes/enhancements#2915
1.23 Alpha:
kubeadm: introduce the UnversionedKubeletConfigMap feature gate kubernetes#105741
kinder: add e2e test for UnversionedKubeletConfigMap (Alpha) #2601
1.24 Beta:
kubeadm: update 2915-kubeadm-replace-kubelet-config-x.y for 1.24 enhancements#3120
kubeadm: switch UnversionedKubeletConfigMap to true kubernetes#108027
test/e2e/framework: include the new control plane taint for "--non-blocking-taints" kubernetes#108336
Automated cherry pick of #108127: test/e2e_kubeadm: fix matching UnversionedKubeletConfigMap kubernetes#108128
test/e2e_kubeadm: fix matching UnversionedKubeletConfigMap defaults kubernetes#108127
kinder: add handling of the new/old kubelet-config map #2654
kubeadm: update legacy kubelet config map information and document feature gates website#31687
1.25 GA:
sig-cl/kubeadm/2915: update KEP for 1.25 enhancements#3316
kubeadm: graduate the UnversionedKubeletConfigMap FG to GA kubernetes#110327
kubeadm: UnversionedKubeletConfigMap is GAed in v1.25 kubernetes#111146
kubeadm: remove unversioned-kubelet-config-map test job test-infra#26461
kinder: remove workflows for UniversionedKubeletConfigMap #2702
kubeadm: update unversioned kubelet config map fg info website#34159
1.26 post-GA:
remove UnversionedKubeletConfigMap feature gate: GAed in v1.25 kubernetes#113448
EDIT: original issue description below
when a control-plane node is created by
init
usingkubernetesVersion: X.Y
, kubeadm will create a "versioned" ConfigMap calledkubelet-config-X.Y
.when a worker node joins the cluster, it uses the version of the local kubelet to fetch this ConfigMap, but if the version of the local kubelet differs from the control-plane version (X.Y) used to originally create the CM, the join process will just fail.
both
init
andupgrade
use the version of the control-plane to manage this ConfigMap,so it makes some sense for the
join
process to use the version of the control-plane as well.but this raises the question whether this internal config stored in the CM will be compatible with the local kubelet.
however we have a version skew topic to discuss here as well.
Kubernetes itself supports X-1 nodes joining a X cluster, but kubeadm does not.
in our documentation we have no official mentions if e.g a kubeadm 1.13 and a kubelet 1.13 worker node can join a cluster with a CP that is 1.14:
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#version-skew-policy
The text was updated successfully, but these errors were encountered: