【问题标题】:Unable to connect to the server: x509: certificate is valid for无法连接到服务器:x509:证书有效期为
【发布时间】:2018-10-21 12:02:24
【问题描述】:

操作系统:Mac OS 10.13.6 终端

用于远程访问的 Kubectl

当我使用“--insecure-skip-tls-verify”执行命令时,它工作正常。

dev-env at balabimac in ~/kthw
$ kubectl --insecure-skip-tls-verify --context=kubernetes-me get pods
No resources found.
dev-env at balabimac in ~/kthw
$ kubectl --insecure-skip-tls-verify --context=kubernetes-me get nodes
NAME                        STATUS     ROLES    AGE   VERSION
balab29123.mylabserver.com   NotReady   <none>   4h    v1.10.2
balab29124.mylabserver.com   NotReady   <none>   4h    v1.10.2
dev-env at balabimac in ~/kthw
$ kubectl --insecure-skip-tls-verify --context=kubernetes-me version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-28T15:20:58Z", GoVersion:"go1.11", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.2", GitCommit:"81753b10df112992bf51bbc2c2f85208aad78335", GitTreeState:"clean", BuildDate:"2018-04-27T09:10:24Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

但是我无法使用下面的命令访问,我卡住了。

dev-env at balabimac in ~/kthw
$ kubectl config use-context kubernetes-me
Switched to context "kubernetes-me".
dev-env at balabimac in ~/kthw
$ kubectl get pods
Unable to connect to the server: x509: certificate is valid for balab29121.mylabserver.com, balab29122.mylabserver.com, balab29126.mylabserver.com, 127.0.0.1.localhost, kubernetes.default, not localhost
dev-env at balabimac in ~/kthw
$ kubectl get nodes
Unable to connect to the server: x509: certificate is valid for balab29121.mylabserver.com, balab29122.mylabserver.com, balab29126.mylabserver.com, 127.0.0.1.localhost, kubernetes.default, not localhost
dev-env at balabimac in ~/kthw

【问题讨论】:

  • 这是一个真正的 GKE 集群吗?你从哪里得到 Kube-configs 的?检查集群证书的到期日期,可能是证书已过期或您的机器不信任它们(对于自签名/本地集群设置)。除此之外,我还看到集群机器上的时间不同步的问题
  • 不,它不是 GKE 集群。让我看看@andriosr
  • 我正在努力关注 kubernetes,
  • 酷,所以基本上你颁发的用于 apiserver 的证书不受本地机器的信任。只需将其作为受信任的证书添加到您的机器中,它就可以工作了。
  • 抱歉稍后回复。我可以知道将其添加到控制器的命令吗?

标签: kubernetes google-kubernetes-engine kubernetes-health-check


【解决方案1】:

看起来当你生成 kubernetes API 服务器证书时,你把 127.0.0.1.localhost 而不是 127.0.0.1,localhost 。只是一个小错字,但结果是证书没有为 localhost 正确签名,这将在您尝试连接时导致此错误。使用正确的值重新生成 Kube API 服务器证书。然后将证书文件复制到您的控制节点并将文件放在正确的位置,替换旧文件。

dev-env at balabimac in ~/kthw 
$ kubectl get pods Unable to connect to the server: x509: certificate is valid for balab29121.mylabserver.com, balab29122.mylabserver.com, balab29126.mylabserver.com, **127.0.0.1.localhost**, kubernetes.default, not localhost

【讨论】:

    【解决方案2】:

    解决方案是给 kubelet 一个由 --kubelet-certificate-authority [1] 签名的服务证书。如果 kubelet 没有提供服务证书,它当前会生成一个自签名证书。

    [1]https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster/#requesting-a-certificate

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2020-12-06
      • 2018-02-24
      • 2017-09-05
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多