kubectl exec失败"无法验证证书,因为它不包含任何IP SAN"

ese*_*les 8 ssl kubernetes

我正在尝试使用kubectl exec进入我的一个容器,但我遇到了这个错误.

$ kubectl exec -it ubuntu -- bash
error: Unable to upgrade connection: {
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "x509: cannot validate certificate for <worker_node_ip> because it doesn't contain any IP SANs",
    "code": 500
}
Run Code Online (Sandbox Code Playgroud)

我已根据本指南https://coreos.com/kubernetes/docs/1.0.6/configure-kubectl.html为我的CA证书和管理密钥等配置了kubectl

更新

我还在API服务器的日志中发现了同样的错误

E1125 17:33:16.308389 1 errors.go:62] apiserver received an error that is not an unversioned.Status: x509: cannot validate certificate for <worker_node_ip> because it doesn't contain any IP SANs
Run Code Online (Sandbox Code Playgroud)

这是否意味着我在我的worker/master节点或本地机器上的kubectl上错误地配置了证书?

小智 4

如果您使用此命令来创建证书:

openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem \
    -CAcreateserial -out server-cert.pem
Run Code Online (Sandbox Code Playgroud)

然后,您的问题可以通过执行以下操作来解决:“客户端”证书使用 -extfile extfile.cnf:

echo subjectAltName = IP:worker_node_ip > extfile.cnf
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial \
   -out server-cert.pem -extfile extfile.cnf
Run Code Online (Sandbox Code Playgroud)

您可以指定任意数量的 IP 地址,例如 IP:127.0.0.1、IP:127.0.1.1(也可以是非 localhost)。