执行gcloud container clusters get-credentials配置K8s集群时遇连接错误
解决gcloud连接Kubernetes集群时的元数据服务器连接错误
首先,先明确你遇到的报错:
ERROR: gcloud crashed (CannotConnectToMetadataServerException): <urlopen error [Errno -2] Name does not resolve>
这个错误本质是gcloud没法解析元数据服务器的域名,或是网络连不上GCP的元数据服务,咱一步步来排查解决:
1. 先排查网络和DNS配置
- 如果是在本地机器操作:
- 先试试把DNS换成公共DNS,比如谷歌的
8.8.8.8或者Cloudflare的1.1.1.1,很多时候本地DNS解析GCP域名出问题会导致这个报错。 - 如果你用了代理,得给gcloud配置代理信息:
gcloud config set proxy/address <你的代理IP> gcloud config set proxy/port <你的代理端口> # 如果代理需要账号密码,再加下面两句 gcloud config set proxy/username <代理用户名> gcloud config set proxy/password <代理密码>
- 先试试把DNS换成公共DNS,比如谷歌的
- 如果是在GCP的虚拟机(比如GCE/GKE节点)内操作:
- 检查能不能访问元数据服务器地址
169.254.169.254,执行curl 169.254.169.254试试,要是连不上,得检查实例的防火墙规则,确保允许访问这个地址的TCP 80端口。
- 检查能不能访问元数据服务器地址
2. 用gcloud自带诊断工具排查
gcloud本身有诊断命令,直接跑:
gcloud info --run-diagnostics
这个命令会自动检测网络连接、认证状态这些问题,跟着提示修复就行,大部分基础问题都能搞定。
3. 重置gcloud配置并重新认证
如果诊断后还是不行,可能是配置文件出问题了,咱重置一下:
# 重置默认配置 gcloud config configurations reset default # 重新登录你的GCP账号 gcloud auth login # 设置正确的项目ID gcloud config set project <你的项目ID>
之后再重新执行获取凭证的命令:
gcloud container clusters get-credentials <你的集群名称> --zone <集群所在区域>
4. 升级gcloud SDK到最新版本
旧版本的gcloud可能存在已知的网络连接bug,升级到最新版试试:
gcloud components update
要是以上方法都不行,你可以执行gcloud feedback提交详细日志给GCP团队,他们能帮你进一步排查。
内容的提问来源于stack exchange,提问作者milk
相关产品推荐
相关产品推荐

