The API server refuses the connection. The logs show a handshake error. The cause is clear: Kubernetes Access TLS configuration is broken.
Transport Layer Security is not optional in Kubernetes. It guards every request between clients, the API server, and cluster resources. Misconfigured certificates, wrong CN values, or mismatched keys will stop workloads cold.
To configure Access TLS in Kubernetes, start with the API server flags. --tls-cert-file and --tls-private-key-file must point to valid PEM files. The certificate must be signed by a trusted CA, with a Subject Alternative Name that matches the server’s hostname or IP.
For client authentication, --client-ca-file lets the API server verify client certificates. Every kubelet, kubectl user, and service must present a cert signed by the CA you trust. In RBAC, map these certificate subjects to the roles they need.