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

本地K8s集群上传文件至GCS遇NameResolutionError问题求助

问题排查与解决线索

1. 修复密钥文件路径不一致问题

你的Terraform部署配置中,命令里将密钥写入./secrets/gcp_creds.json(相对路径),但环境变量GOOGLE_APPLICATION_CREDENTIALS指向的是绝对路径/secrets/gcp_creds.json,两者路径不匹配。如果容器的工作目录不是/,SDK会找不到密钥文件,导致认证流程异常,可能间接引发DNS解析错误。

修改命令中的路径为绝对路径:

mkdir /secrets
echo ${var.storage-sa-key} | base64 --decode > /secrets/gcp_creds.json
python ./run.py

2. 排查Kubernetes集群DNS服务(CoreDNS)状态

  • 查看CoreDNS Pod的运行状态:
    kubectl get pods -n kube-system -l k8s-app=kube-dns
    
  • 查看CoreDNS日志,检查是否有解析oauth2.googleapis.com的错误:
    kubectl logs -n kube-system -l k8s-app=kube-dns
    
  • 如果CoreDNS存在重启或日志中有解析超时记录,可尝试重启CoreDNS Pod:
    kubectl rollout restart deployment/coredns -n kube-system
    

3. 测试Pod内DNS解析的稳定性

进入问题Pod,持续测试oauth2.googleapis.com的解析:

kubectl exec -it <你的Pod名称> -- sh
# 循环执行解析命令,观察是否有失败情况
while true; do nslookup oauth2.googleapis.com; sleep 2; done

如果出现偶尔解析失败,说明集群DNS存在间歇性故障,需调整CoreDNS的缓存或超时配置。

4. 调整Pod的DNS配置

在Pod的spec中添加dnsConfig,增加DNS重试次数和超时时间,提升解析稳定性:

spec {
  container {
    # ... 其他容器配置 ...
  }
  dns_config {
    option {
      name  = "ndots"
      value = "5"
    }
    option {
      name  = "timeout"
      value = "2"
    }
    option {
      name  = "attempts"
      value = "3"
    }
  }
}

5. 检查GCP Python SDK的重试配置

默认情况下,GCP SDK的重试策略可能不足以应对间歇性DNS故障。可以显式配置客户端的重试参数:

from google.api_core import retry

# 初始化客户端时配置重试策略
self.storage_client = storage.Client.from_service_account_json(
    json_credentials_path=os.environ["GOOGLE_APPLICATION_CREDENTIALS"],
    retry=retry.Retry(
        initial=1.0,  # 初始重试间隔
        total=30,     # 总重试时间
        multiplier=2, # 间隔乘数
        predicate=retry.if_exception_type(Exception)
    )
)

6. 验证Pod的网络策略

检查是否有网络策略限制了Pod对外的DNS请求(UDP 53端口)或对oauth2.googleapis.com的HTTPS访问(TCP 443端口):

kubectl get networkpolicies -n <你的命名空间>

如果存在限制策略,需调整允许Pod访问外部DNS服务和GCP OAuth2端点。


内容的提问来源于stack exchange,提问作者Roman Bauer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:12:44