Cluster test is unhealthy:Get "http://localhost:1080/external-cert/<supervisor_control_plane_ip>/6443/version?timeout=2m0s": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Error : Configured Supervisor Control plane VM's Workload Network Configuration error (since MM/DD/YYYY, hh:mm:ss PM) CoreDNS configuration failed on Master node with identifier <supervisor-node-id>. Details: failed to retrieve current version from etcd.
kubectl get nodes shows below:root@### [ ~ ]# kubectl get nodesNAME STATUS ROLES AGE VERSION<node-1> Ready control-plane,master 571d v1.25.6+vmware.wcp.2<node-2> NotReady control-plane,master 571d v1.25.6+vmware.wcp.2<node-3> Ready control-plane,master 571d v1.25.6+vmware.wcp.2
kubelet log using command "journalctl -xeu kubelet">kubelet[34395]: E0528 hh:mm:ss.ss 34395 server.go:425] "Client rotation is on, will bootstrap in background">kubelet[34395]: E0528 hh:mm:ss.ss 34395 bootstrap.go:265] "Client rotation is on, will bootstrap in background">kubelet[34395]: E0528 hh:mm:ss.ss 34395 run.go:74] "command failed" err="FAILED_TO_RUN_KUBELET: unable to load bootstrap kubeconfig: stat /etc/kubernetes/kubelet.conf: no such file or directory"
>kubelet[34395]: E0825 hh:mm:ss.ss 34395 bootstrap.go:266] part of the existing bootstrap client certificate in /etc/kubernetes/kubelet.conf is expired: YYYY-MM-DD
The node is NotReady because the kubelet service fails to start due to an expired certificate in /etc/kubernetes/kubelet.conf. This prevents the kubelet from connecting to the API server, causing containers to exit, pods to terminate, and etcd to lose quorum since only two of the three nodes are operational.
Open an SSH session to all Supervisor control plane nodes.
Validate the kubelet certificate is valid using the below command
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -text -noout
Edit the kubelet.conf file on the affected Supervisor Control Plane Node with below changes:
vi /etc/kubernetes/kubelet.conf
Change "client-certificate-data" to "client-certificate" and "client-key-data" to "client-key"
Make sure client-certificate and client-key point to a valid certificate path at /var/lib/kubelet/pki/kubelet-client-current.pem instead of certificate content in double encoded format.
client-certificate-data: #.....<Certificate-content in double encoded format>client-key-data: #....<Certificate-content in double encoded format>apiVersion: v1clusters:- cluster: certificate-authority-data: [REDACTED] server: https://###.###.###.###:6443 name: <cluster name>contexts:- context: cluster: <cluster name> user: system:node:<cluster name>-controlplane-#### name: system:node:<cluster name>-controlplane-####@<cluster name>current-context: system:node:<cluster name>-controlplane-####@<cluster name>kind: Configpreferences: {}users:- name: system:node:<cluster name>-controlplane-#### user: client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem client-key: /var/lib/kubelet/pki/kubelet-client-current.pem
Restart the kubelet service
systemctl restart kubelet.service
Verify the kubelet is running
systemctl status kubelet.service
Confirm containers and pods are in Running state
kubectl get pods -A -o wide
crictl ps -a
Ensure all nodes are in a Ready state
kubectl get nodes -o wide