我查看了部署到容器中的服务帐户ca.crt文件,它们不包含任何具有主节点的IP或DNS名称的SAN。这会导致SSL错误,例如:https://0.0.0.0:10250/metrics:x509:无法验证0.0.0.0的证书,因为它不包含任何IP SAN。
有没有其他人遇到这个问题?除了允许不安全的ssl之外,你是如何解决它的呢?
答案 0 :(得分:2)
服务帐户(/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提供自签名证书,因此不安全是唯一的方法。