【问题标题】:Kubernetes, Changing Server of Kops Cluster [closed]Kubernetes,更改 Kops 集群的服务器 [关闭]
【发布时间】:2020-04-19 03:35:36
【问题描述】:

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

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

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

这是我在使用新 url 更改 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 配置的集群中更改我的证书,而对这种情况的影响最小。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 kubernetes amazon-route53 kops


    【解决方案1】:

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

    编辑:

    更改 url 的影响是需要重新生成 kube-apiserver 证书,新的 url 为 'host',否则 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

    【讨论】:

    • 我已经这样做了,但是更改kubeconfig文件后,我无法访问集群。
    • 错误是什么?您可以尝试使用详细设置 kubectl -v=8-get nodes 运行 kubectl 命令吗
    • 我无法运行您要求的命令。你能告诉我你想让我用反逗号运行什么命令吗?此外,这是我在使用新 url 更改 kubeconfig 文件并运行 kubectl get pods 命令时遇到的错误。 “无法连接到服务器:x509:证书对 internal.old-server-url.com、old-server-url.com、kubernetes、kubernetes.default、kubernetes.default.svc、kubernetes.default.svc 有效。 cluster.local,而不是 new-server-url.com"
    • 对不起,我打错了,你可以试试这个“kubectl -v=8 get nodes”
    • 是的,需要在master上完成
    【解决方案2】:

    仅解决错误:

    "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

    不建议用于生产环境。

    【讨论】:

    • 开发环境可以,但不推荐用于生产环境
    • @ArghyaSadhu 你是对的。
    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 2019-05-28
    • 2017-11-08
    • 2018-12-27
    • 2018-12-26
    • 2021-05-14
    • 2022-09-26
    • 1970-01-01
    相关资源
    最近更新 更多