我调查了部署到容器中的服务帐户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提供自签名证书,因此不安全是唯一的方法。