During a rolling update, new machines fail to bootstrap. Each new VM reaches the kubeadm phase but does not generate
/etc/kubernetes/pki,
/var/lib/kubelet/config.yaml
, or
/etc/kubernetes/admin.conf
. The kubelet service does not start, and the machine status remains in a waiting state for nodeRef/Node.
In the node’s bootstrap logs located at
/var/log/cloud-init-output.log
and
/var/log/cloud-init.log
, kubeadm terminates during the kubelet-start phase with the following errors:
configmap “kubelet-config” not found
error execution phase kubelet-start: failed to load kubelet configuration: configmap “kubelet-config” not found
MachineSet events show:
Machine has unhealthy node
KubeadmControlPlane (KCP) describe output shows:
waiting for control plane/worker to pass preflight checks to continue reconciliation: Machine does not have a corresponding Node yet (Machine.status.nodeRef not set)
Reviewing
/var/log/cloud-init-output.log
on the affected node confirms kubeadm fails immediately after attempting to write the kubelet configuration file.
error execution phase preflight: unable to fetch kubeadm-config ConfigMap: failed to get config map:
Network connectivity and control-plane endpoint checks remain functional, isolating the issue to the missing ConfigMap.
This condition prevents new VMs from completing initialization and blocks the rolling update process.
The
kubelet-config
ConfigMap in the VKS cluster’s
kube-system
namespace is missing.
During bootstrap, kubeadm retrieves this ConfigMap to obtain the default kubelet configuration parameters required to create
/var/lib/kubelet/config.yaml
.
If the ConfigMap is absent, kubeadm cannot complete the kubelet-start phase and reports the error
“configmap ‘kubelet-config’ not found,”
leaving the node unregistered.