3

我在官方 kubernetes github 分支上使用本教程使用kops在aws上设置了Kubernetes集群。

集群在 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.

4

1 回答 1

3

无法连接到服务器: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 脚本,它可以按书面方式工作,或者如果没有其他提供非常具体的指导。

我确实承认这是很多话,也有很多工作,但是证书非常重要,因此尽可能正确地获取它们确实可以避免每个人的心痛。

于 2017-05-09T06:21:56.987 回答