![连接到外部 kubernetes 集群时出错](https://linux22.com/image/792415/%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%A4%96%E9%83%A8%20kubernetes%20%E9%9B%86%E7%BE%A4%E6%97%B6%E5%87%BA%E9%94%99.png)
我使用 kubeadm 安装了 kubernetes 集群,服务器本身一切正常,主节点和工作节点可见
--apiserver-cert-extra-sans=*.*.201.87
我从本地 PC 连接到另一个网络,之前已将 admin.conf 复制到 ~/.kube,但出现错误
E0125 13:47:12.606617 794306 proxy_server.go:147] Error while proxying request: x509: cannot validate certificate for *.*.201.87 because it doesn't contain any IP SANs
我们尝试再次申请证书,但没有成功
答案1
如果您确实使用*.*.201.87
,那么这是错误的,您应该使用正确的 IP 地址或 DNS 名称。
如果您在此示例中屏蔽了实际 IP *
,请检查 TLS 握手期间提供的证书:
openssl s_client -connect <host>:<port>
# save cert in cert.pem
openssl x509 -text -noout -in cert.pem
检查下列出的条目X509v3 Subject Alternative Name
。
答案2
您发布的错误
x509: cannot validate certificate for ..201.87 because it doesn't contain any IP SANs
表示 Kubernetes API 服务器出示的证书不包含与您用于访问集群的 IP 地址匹配所需的 IP SAN。
尝试使用适当的 IP SAN 重新生成 Kubernetes API 服务器的证书。您可以使用命令kubeadm alpha phase certs all --apiserver-advertise-address=<your-IP\>
来实现此目的。请参阅此关联
还要确保库贝康菲环境变量已正确设置为您的管理配置文件文件。此文件应包含向 Kubernetes API 服务器进行身份验证所需的证书和密钥数据。
答案3
就我而言
export no_proxy=$no_proxy,11.62.201.87