无法连接到服务器:x509:证书对 *.secure.hosting prod.com 有效,而不是 api.subdomain.mydomain.com
我不知道您列出的那些名称是示例,还是kubectl给您的实际值,但我会按照您所写的那样使用它们,只是为了让事情简单
如果您安装的 kubernetes 集群真的可以通过 访问api.secure.hostingprod.com,那么更新您$HOME/.kube/config说它https://api.secure.hostingprod.com当前所说的位置https://api.subdomain.mydomain.com应该可以让事情恢复正常。
或者,如果api.secure.hosting prod.com不是您可以使用的实际域(例如,如果您的证书确实在主机名中有空格),那么您有几个选择。
最便宜但最不正确的方法可能是通过在文件中的条目下设置选项来告诉kubectl“我知道我在做什么,不要检查证书” :insecure-skip-tls-verifycluster$HOME/.kube/config
- cluster:
insecure-skip-tls-verify: true
api.subdomain.mydomain.com更麻烦但也是最正确的方法是使用实际主机名(显然)为 API 服务器重新颁发证书。如果您知道怎么做,最好的方法是在证书中添加“Subject Alternate Names”(缩写为“SAN”),以便集群内成员可以将其称为https://kubernetes和/或https://kubernetes.default.svc.cluster.local,以及ServiceIP 地址分配给命名空间kubernetes Service中的default。您当前的证书极有可能具有这些值,这openssl x509 -in /path/to/your.crt -noout -text将向您显示它们当前的值。如果您需要有关 openssl 位的帮助,CoreOS Kubernetes 有一个他们使用的 shell 脚本,它可以按书面方式工作,或者如果没有其他提供非常具体的指导。
我确实承认这是很多话,也有很多工作,但是证书非常重要,因此尽可能正确地获取它们确实可以避免每个人的心痛。