无法连接到服务器:x509:证书适用于*.secure.hostingprod.com,而不是api.subdomain.mydomain.com。
我无法确定您列出的名称是示例还是kubectl给出的实际值,但为了保持简单,我将按您编写的方式使用它们。如果您安装的kubernetes集群确实可以通过api.secure.hostingprod.com访问,则将$HOME/.kube/config更新为当前说https://api.subdomain.mydomain.com的https://api.secure.hostingprod.com应该使事情恢复正常。
或者,如果api.secure.hostingprod.com不是您可以使用的实际域(例如,如果您的证书的主机名中真的有空格),则您有几个选择。
最便宜但不正确的可能是通过在$HOME/.kube/config文件中在cluster条目下设置insecure-skip-tls-verify选项来告诉kubectl“我知道我在做什么,请勿检查证书”:
- cluster:
insecure-skip-tls-verify: true
更繁琐但也更正确的方法是使用实际主机名(显然为
api.subdomain.mydomain.com
)重新发布API服务器的证书。如果您知道如何操作,最好还要在证书中添加“Subject Alternate Names”(缩写为“SAN”),以便集群内部成员可以将其称为
https://kubernetes
和/或
https://kubernetes.default.svc.cluster.local
,以及分配给
default
命名空间中
kubernetes
Service
的 IP地址。您当前的证书极有可能具有这些值,可通过
openssl x509 -in /path/to/your.crt -noout -text
查看当前值。如果您需要openssl方面的帮助,CoreOS Kubernetes提供了一个
shell脚本,该脚本可能已经可以直接使用,或者至少可以提供非常具体的指导。
我知道这是很多文字,也需要很多工作,但证书非常重要,因此尽可能使它们正确将真正节省大家未来的麻烦。