我使用kops在AWS上设置了一个kubernetes集群。
现在,服务器url是https://old-server-url.com。该url是在Route53上配置的,指向集群主实例的公共ip。
我想把这个换成https://new-server-url.com。我用主IP在Route53上配置了新的url。但是它只是用新的URL打开kubernetes仪表板。我不能用这个网址通过kubectl访问kubernetes服务器。
这是在用新url更改kubeconfig文件并运行kubectl pods命令时遇到的错误。
"Unable to connect to the server: x509: certificate is valid for internal.old-server-url.com, old-server-url.com, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, not new-server-url.com"
如果只有kubernetes集群的服务器被更改,并且我可以通过kubectl /kubectl访问它,我需要更改哪些配置?
更新:在使用kubectl命令中的--不安全-跳过-tls-验证标志之后,我可以访问我的集群。但这是不安全的。我想知道如何在kops提供的集群中更改Certf隐形,对此场景的影响最小。
发布于 2019-12-30 12:18:19
要解决错误,请执行以下操作:
"Unable to connect to the server: x509: certificate is valid for internal.old-server-url.com, old-server-url.com, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, not new-server-url.com"
您可以使用kubectl命令使用-不安全-跳过-tls-验证标志,如下所示:对kubernetes主机的无效x509证书
不建议在生产环境中这样做。
发布于 2019-12-30 11:31:37
Kubectl使用kubeconfig file.In,该文件需要将API服务器url从旧url更改为新url。
编辑:
更改url的影响是,您需要用新的url作为“主机”重新生成kube证书,否则kubectl将因证书验证错误而失败。
这是因为kubectl在调用k8s API服务器时会验证kube提供的服务器证书。
要使用kubeadm (kops内部使用kubeadm)在主节点中重新生成kube apiserver证书,您可以运行以下命令:
rm /etc/kubernetes/pki/apiserver.*
kubeadm init phase certs all --apiserver-cert-extra-sans=https://new-server-url.com
docker rm -f `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet
默认SAN为kubernetes、kubernetes.default、kubernetes.default.svc、kubernetes.default.svc.cluster.local、10.96.0.1、127.0.0.1
https://stackoverflow.com/questions/59529986
复制相似问题