Kubernetes,更改Kops集群的服务器

我使用kops在AWS上设置了kubernetes集群。

现在,服务器URL为https://old-server-url.com。 该URL在Route53上配置,指向群集的主实例的公共ip。

我想将此更改为https://new-server-url.com。 我在Route53上配置了与主IP相同的新URL。但这只是用新的URL打开kubernetes仪表板。 我无法通过带有该URL的kubectl访问kubernetes服务器。

这是在使用新网址更改kubeconfig文件并运行kubectl get 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集群的服务器,并且可以通过kube config / kubectl访问它?

更新: 在kubectl命令中使用--insecure-skip-tls-verify标志后,可以访问群集。但这是不安全的。我想知道如何在这种情况下以最小的影响来更改kops预配置群集中的证书。

zhoujintangjob 回答:Kubernetes,更改Kops集群的服务器

Kubectl使用kubeconfig文件。在该文件中,您需要将API服务器的URL从旧的URL更改为新的URL。

编辑:

更改URL的影响是,您需要使用新的URL作为“主机”来重新生成kube-apiserver证书,否则kubectl将失败,并出现证书验证错误。

之所以发生这种情况,是因为kubectl在调用k8s API服务器时会验证kube-apiserver提供的服务器证书

要使用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

Official docs

,

要解决该错误,请执行以下操作:

"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"

您可以按如下说明将--insecure-skip-tls-verify标志与kubectl命令一起使用:Invalid x509 certificate for kubernetes master

本文链接:https://www.f2er.com/2840437.html

大家都在问