In the vSphere web client, when viewing the Summary of an ESXi host in the cluster, the Kubernetes status shows an error message similar to the below:
Node is not healthy and is not accepting pods. Details Kubelet stopped posting node status
Node is not healthy and is not accepting pods. Details Kubelet never posted node status
While connected to the Supervisor cluster context, one or more of the following symptoms are observed:
kubectl get pods -A | grep -v Run
kubectl get machines -n <cluster namespace>
kubectl get nodesNAME STATUS ROLES AGE VERSION
<supervisor-dns-name-1> Ready control-plane,master ###d v1.##.#+vmware.wcp.#<supervisor-dns-name-2>
Ready control-plane,master ###d v1.##.#+vmware.wcp.#<supervisor-dns-name-3>
Ready control-plane,master ###d v1.##.#+vmware.wcp.#
<esxi-hostname-a> NotReady agent ###d v1.##.#-sph-a12b3c4
<esxi-hostname-b> NotReady agent ###d v1.##.#-sph-a12b3c4
<esxi-hostname-c> NotReady agent ###d v1.##.#-sph-a12b3c4
NodeStatusUnknown Kubelet stopped posting node status.
NodeStatusNeverUpdated Kubelet never posted node status.
vSphere with Tanzu 7.0
vSphere with Tanzu 8.0
This issue can occur regardless of whether or not the environment is managed by Tanzu Mission Control (TMC)
The status of ESXi agents from kubectl get nodes in the Supervisor cluster context also tracks the status of the spherelet process on the ESXi host.
This may indicate an issue with spherelet on the NotReady ESXi host.
Spherelet requires that port connectivity over port 10250 is available on both eth0 and eth1 interfaces bidirectionally to and from the Supervisor cluster.
The status of spherelet should be checked, including its certificates and port connectivity.
/etc/init.d/spherelet status
YYYY-MM-DD HH:MM:SS,sss init.d/spherelet spherelet is running
YYYY-MM-DD HH:MM:SS,sss init.d/spherelet spherelet is running
/var/log/spherelet.log
failed to retrieve node: unauthorized
openssl s_client -connect <my-esxi-host.domain.com>:10250 | openssl x509 -noout -dates -fingerprint
openssl x509 -text -in /etc/vmware/spherelet/client.crt | grep Not openssl x509 -text -in /etc/vmware/spherelet/spherelet.crt | grep Not
esxcli network firewall ruleset list | egrep "Name|spherelet"
Name Enabled
spherelet True
esxcli network firewall ruleset rule list |egrep "Ruleset|spherelet"
Ruleset Direction Protocol Port Type Port Begin Port End
spherelet Inbound TCP Dst 10250 10250
spherelet Outbound TCP Dst 0 65535
curl -v telnet://<ESXi_Management_IP>:10250 --interface eth0
curl -v telnet://<ESXi_Management_IP>:10250 --interface eth1