无法连接GKE集群:x509证书未生效/过期问题求助
GKE集群连接失败(证书时间不匹配问题)
已完成kubectl认证配置,但无法连接GKE集群,执行的命令及报错信息如下:
执行命令及输出
- 查看认证插件版本:
$ gke-gcloud-auth-plugin version { "kind": "ExecCredential", "apiVersion": "client.authentication.k8s.io/v1beta1", "spec": { "interactive": false }, "status": { "expirationTimestamp": "2023-11-21T18:46:36Z",
- 获取集群凭证:
$ gcloud container clusters get-credentials $NAME
- 尝试获取节点列表时报错:
$ kubectl get nodes E1121 21:07:03.903867 109630 memcache.go:265] 无法获取当前服务器API组列表:Get "https://35.230.71.198/api?timeout=32s": tls: 证书验证失败:x509: 证书已过期或尚未生效,当前时间2023-11-21T21:07:03+03:00早于2023-11-22T06:42:11Z E1121 21:07:04.348742 109630 memcache.go:265] 无法获取当前服务器API组列表:Get "https://35.230.71.198/api?timeout=32s": tls: 证书验证失败:x509: 证书已过期或尚未生效,当前时间2023-11-21T21:07:04+03:00早于2023-11-22T06:42:11Z E1121 21:07:04.765932 109630 memcache.go:265] 无法获取当前服务器API组列表:Get "https://35.230.71.198/api?timeout=32s": tls: 证书验证失败:x509: 证书已过期或尚未生效,当前时间2023-11-21T21:07:04+03:00早于2023-11-22T06:42:11Z E1121 21:07:05.214094 109630 memcache.go:265] 无法获取当前服务器API组列表:Get "https://35.230.71.198/api?timeout=32s": tls: 证书验证失败:x509: 证书已过期或尚未生效,当前时间2023-11-21T21:07:05+03:00早于2023-11-22T06:42:11Z E1121 21:07:05.648717 109630 memcache.go:265] 无法获取当前服务器API组列表:Get "https://35.230.71.198/api?timeout=32s": tls: 证书验证失败:x509: 证书已过期或尚未生效,当前时间2023-11-21T21:07:05+03:00早于2023-11-22T06:42:11Z 无法连接服务器:tls: 证书验证失败:x509: 证书已过期或尚未生效,当前时间2023-11-21T21:07:05+03:00早于2023-11-22T06:42:11Z
问题原因
本地机器当前时间早于GKE集群证书的生效时间,属于本地系统时间与集群服务器时间不匹配导致的TLS证书验证失败。
解决方法
- 检查本地机器的系统时间和时区,确保与实际时间一致
- Linux系统:
# 查看当前时间状态 timedatectl # 启用NTP时间同步 sudo timedatectl set-ntp true # 重启时间同步服务 sudo systemctl restart systemd-timesyncd - Windows系统:
打开「设置」→「时间和语言」,开启「自动设置时间」和「自动设置时区」 - macOS系统:
打开「系统偏好设置」→「日期与时间」,勾选「自动设置日期与时间」和「自动设置时区」
内容的提问来源于stack exchange,提问作者j4nus
相关产品推荐
相关产品推荐

