{"level":"warn","caller":"embed/config_logging.go:###","msg":"rejected connection on client endpoint","remote-addr":"<IP>:<PORT>","server-name":"","error":"tls: client didn't provide a certificate"}YYYY-MM-DD:T:HH:MM:SS <Control plane Node> kubelet[#####]: I### http: TLS handshake error from <IP>:<PORT>: client sent an HTTP request to an HTTPS server""############ upgradeaware.go:#####] Error proxying data from backend to client: write tcp <IP>:<PORT> -> <IP>:<PORT> : write: broken pipe"
YYYY-MM-DD:T:HH:MM:SS <Control plane Node> kubelet[#####]: I### upgradeaware.go: Error proxying data from backend to client: writeto tcp <IP>:<PORT> -> <IP>:<PORT> write tcp <IP>:<PORT> -> <IP>:<PORT> write: broken pipeVMware vSphere Kubernetes Service
An application residing on a worker node (commonly a monitoring tool) is polling the etcd client endpoint on port 2379 using HTTPS or HTTP, but it is not providing the required Mutual TLS (mTLS) client certificates. The etcd server rejects the connection because peer verification fails.
To resolve the alerts, identify the source application and update its configuration with valid certificates.
kubectl get pods -o wide -A | grep -E "<SOURCE_IP>"sudo tcpdump -i any -nn -c 20 'dst port 2379 and (tcp[tcpflags] & tcp-syn != 0)'
Note: The etcd certificates (.ca, .crt, and key) are located on the control plane node at: /etc/kubernetes/pki/etcd/