heming
一个有效的证书是与其持有者的主体绑定的,在kube-apiserver
所使用的HTTPS证书语境下,这个主体就是它的访问地址(域名、IP),客户端(浏览器、kubectl
、kubelet
等)与apiserver通信并验证其身份时,会比对其地址是否包含在该证书中。由于创建集群时master节点并未绑定你之后才建立的VPN地址,因此kubeadm为apiserver签发的证书并不包含该地址,节点join时验证失败。
你可在master节点上执行openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text | grep IP
查看证书已包含的地址。
要解决此问题,你可:
- 使用kubeadm或openssl为apiserver证书增加该VPN的IP地址
- 或在欲加入集群的节点中编辑
/etc/hosts
文件,配置apiserver证书中已包含的某个域名到IP地址的固定映射,并使用此域名加入集群