我使用 Kubernetes 使用 kops在 aws 上设置 this tutorial 群集在官方kubernetes github分支上。
群集在AWS上成功设置,但是当我尝试运行
时kubectl get nodes
或
kops validate cluster
它说
[user@ip-70-0-0-7 ~]$ kubectl cluster-info
Unable to connect to the server: x509: certificate is valid for *.secure.hosting prod.com, not api.subdomain.mydomain.com
这绝对是我的 x509证书的问题。只需要轻轻推动正确的方向。感谢您宝贵的时间和帮助!
NOTE: I am running these commands from outside the cluster from a machine from where I did set up of cluster.
答案 0 :(得分:2)
无法连接到服务器: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
“我知道我在做什么,不要通过在{{1下设置insecure-skip-tls-verify
选项来检查证书” cluster
文件中的条目:
$HOME/.kube/config
更麻烦但也是最正确的是使用实际主机名(显然是- cluster:
insecure-skip-tls-verify: true
)重新颁发API服务器的证书。如果您知道如何,超级最佳也是将“主题备用名称”(缩写为“SAN”)添加到证书中,以便集群内成员可以将其称为api.subdomain.mydomain.com
和/或{ {1}}以及分配给https://kubernetes
命名空间中https://kubernetes.default.svc.cluster.local
Service
的{{1}} IP地址。您当前的证书极有可能具有这些值,kubernetes
将显示它们当前的状态。如果你需要openssl位的帮助,CoreOS Kubernetes有a shell script他们使用的,可能是书面的,或者没有其他任何东西提供非常具体的指导。
我确实认识到这很多,而且还有很多工作,但证书非常重要,所以尽可能让它们变得正确,这样可以真正让每个人心痛。