访问k8s集群出现Unable to connect to the server: x509: certificate is valid for xxx, not xxx问题解决【详细步骤】
访问k8s集群出现Unable to connect to the server: x509: certificate is valid for xxx, not xxx问题解决
·
笔者配置好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 apiserver.*
apiserver.crt apiserver.key
重启apiserver
$ docker ps|grep apiserver
c6947d3f08cb b6d7abedde39 "kube-apiserver --ad…" 3 days ago Up 42 minutes k8s_kube-apiserver_kube-apiserver-debian-1_kube-system_8c9ab1ead009c3ba3cbb640306555281_12
3d6e28c76425 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 3 days ago Up 42 minutes k8s_POD_kube-apiserver-debian-1_kube-system_8c9ab1ead009c3ba3cbb640306555281_1
$ docker restart c6947d3f08cb 3d6e28c76425
c6947d3f08cb
3d6e28c76425
检查
$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.1.195:6443
CoreDNS is running at https://192.168.1.195:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
完成
更多推荐
已为社区贡献4条内容
所有评论(0)