Kubernetes,Kops 集群的 Changing Server

Kubernetes, Changing Server of Kops Cluster

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

现在,服务器 url 是 https://old-server-url.com。 此 url 在 Route53 上配置,指向集群主实例的 public ip。

我想将其更改为 https://new-server-url.com。 我在与主 IP 相同的 Route53 上配置了新的 url。但它只是用新 URL 打开 kubernetes 仪表板。 我无法使用此 url.

通过 kubectl 访问 kubernetes 服务器

这是我在使用新的 url 和 运行 kubectl get pods 命令更改 kubeconfig 文件时遇到的错误。

"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集群的server,就可以通过kube config/kubectl访问?

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

Kubectl 使用 kubeconfig file.In 该文件,您需要将 API 服务器 url 从旧的 url 更改为新的 url。

编辑:

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

发生这种情况是因为 kubectl 在调用 k8s API server

时验证了 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 命令一起使用,如下所述:

不推荐用于生产环境。