You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GCP部署的OpenShift Pod内访问http://metadata.google.internal时遭遇连接拒绝错误的解决方法

解决GCP上OpenShift Pod无法访问metadata.google.internal的连接拒绝问题

我来帮你搞定这个连接拒绝的问题,在GCP部署的OpenShift集群里,Pod访问元数据服务出问题是比较常见的场景,咱们一步步排查解决:

  • 先检查节点上的元数据代理状态
    OpenShift在GCP上默认靠节点的kube-metadata-proxy来转发Pod的元数据请求。你先看看这个代理Pod是不是正常运行:
oc get pods -n kube-system | grep metadata-proxy

要是发现代理Pod状态异常或者没运行,直接删掉它让集群重建就行:

oc delete pod <metadata-proxy-pod-name> -n kube-system
  • 确认Pod的服务账户权限
    Pod用的服务账户得有访问GCP元数据的权限才行。默认的OpenShift服务账户权限可能不够,你可以给对应的服务账户绑定一个合适的GCP角色,比如roles/compute.viewer:
gcloud projects add-iam-policy-binding <你的项目ID> --member "serviceAccount:<你的服务账户>@<你的项目ID>.iam.gserviceaccount.com" --role "roles/compute.viewer"

另外别忘了检查Pod的YAML配置里,serviceAccountName字段是不是指向了这个有权限的服务账户。

  • 排查网络策略限制
    有时候集群的网络策略会挡住Pod的出站流量,连不上metadata服务。先看看当前有哪些网络策略:
oc get networkpolicy

如果有策略限制了80端口的出站,得修改策略允许Pod访问metadata.google.internal,或者新增一个专门的规则放行这个地址的流量。

  • 在节点上测试元数据访问
    登录到Pod所在的节点,直接在节点上跑curl命令试试:
curl 'http://metadata.google.internal/computeMetadata/v1/project/?recursive=true' -H 'Metadata-Flavor: Google'

要是节点能正常拿到响应,说明问题出在Pod到节点的转发环节;要是节点也访问不了,那得检查GCP节点本身的元数据服务,或者重启节点试试。

  • 验证Pod的DNS解析
    先确认Pod能不能正确解析metadata.google.internal这个域名,在Pod里执行:
nslookup metadata.google.internal

如果解析失败,看看集群的DNS服务(coredns)是不是正常:

oc get pods -n openshift-dns

要是DNS Pod状态不对,重启它们就行,或者检查DNS的配置有没有问题。

内容的提问来源于stack exchange,提问作者Talat Shaheen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 11:04:07