笔者配置好k8s集群之后,兴奋地发给一位远程工作地同事进行测试,该同事通过vpn连入我的服务器,再通过该服务器执行kubectl命令,结果出现了标题中的错误。原因是通过vpn接入的时候,服务器的地址就不是原来的内网地址了,因此需要针对该vpn地址进行授权。授权流程如下
查看apiserver证书
openssl x509 -noout -text -in apiserver.crt|grep DNS
DNS:debian-1, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:10.96.0.1, IP Address:192.168.1.195
证书中没有所需的ip地址
删除旧apiserver证书
cd /etc/kubernetes/pki
rm apiserver.*
生成新apiserver证书
kubeadm init phase certs apiserver --apiserver-advertise-address ${apiserver-ip1} --apiserver-cert-extra-sans ${apiserver-ip2} --apiserver-cert-extra-sans ${apiserver-ip3}
上边的命令中${apiserver-ip1} ${apiserver-ip2} ${apiserver-ip3}根据自己集群的实际情况进行调整。如果需要增加更多的地址,可以继续在命令里增加 --apiserver-cert-extra-sans ${apiserver-ip}参数。
此时可以看到生成了新的apiserver证书。
ls apis

最低0.47元/天 解锁文章
583





