我调查了部署到容器中的服务帐户ca.crt文件,它们不包含任何具有主节点IP或dns名称的SAN。这将导致SSL错误,例如:https://0.0.0.0:10250/metrics:x509:无法验证0.0.0.0的证书,因为它不包含任何IP SAN。

还有其他人遇到这个问题吗?除了允许不安全的SSL之外,您还如何解决?

最佳答案

服务帐户(/run/secrets/kubernetes.io/serviceaccount/ca.crt)提供的ca证书用于与apiserver通信(由GKE上的主服务器提供)。

# curl --cacert /run/secrets/kubernetes.io/serviceaccount/ca.crt https://kubernetes -H "Authorization: Bearer $(cat /run/secrets/kubernetes.io/serviceaccount/token)"
{
  "paths": [
    "/api",
    ...
  ]

看来您正在尝试使用kubelet API(端口10250)。 kubelet API提供自签名证书,因此不安全是唯一的方法。

10-06 13:55
查看更多