Kubernetes 集群 x509:证书问题

3

我使用Kuberneteskops在AWS上搭建了集群,参考了官方教程

集群在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证书有关的问题。只需要一个指向正确方向的小推动。感谢您宝贵的时间和帮助! 注意:我是从集群外运行这些命令的,我是在那里设置集群的机器上进行的。

你使用的是哪个操作系统?至少在CENTOS上,有一个安装依赖项涉及证书。 - Norbert
这是亚马逊AMI。 - Shinde Arjun
嗨,Arjun,你解决了这个问题吗?如果是的话,你最终采用了什么方法? - Shruthi Bhaskar
@Shruti 是 Daniel 回答中提到的那个。 - Shinde Arjun
1个回答

5
无法连接到服务器: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命名空间中kubernetesService的 IP地址。您当前的证书极有可能具有这些值,可通过openssl x509 -in /path/to/your.crt -noout -text查看当前值。如果您需要openssl方面的帮助,CoreOS Kubernetes提供了一个shell脚本,该脚本可能已经可以直接使用,或者至少可以提供非常具体的指导。
我知道这是很多文字,也需要很多工作,但证书非常重要,因此尽可能使它们正确将真正节省大家未来的麻烦。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接