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

GKE标准集群DNS解析异常缓慢:kube-dns疑似故障

问题分析与解决方案建议

问题概述

当前GKE集群(版本1.28.10-gke.1075001)存在严重DNS解析延迟问题:

  • 集群内Pod访问服务DNS地址(<service>.<namespace>.svc.cluster.local)耗时长达7秒以上,直接访问服务IP则无延迟
  • 重启kube-dns Pod可临时恢复,但问题会复现
  • kube-dns日志大量出现streamwatcher.go:111] Unexpected EOF during watch stream event decoding: unexpected EOF报错,推测是自动集群升级时kube-dns与API Server的watch连接断开,导致DNS记录无法同步

核心疑问:迁移至Cloud DNS能否永久解决该问题?

核心回答:迁移至Cloud DNS大概率能解决问题

原因说明

  1. 架构层面规避问题根源:
    kube-dns是运行在集群内部的Pod,依赖与API Server的watch连接实时同步服务、Endpoint等DNS记录,一旦连接断开且无法自动恢复,就会导致DNS解析异常。而Cloud DNS for GKE是将集群内的DNS记录同步到Google托管的Cloud DNS服务,Pod直接查询Cloud DNS,不再依赖集群内部DNS组件与API Server的连接,从根源上避免了这类连接异常问题。

  2. 托管服务稳定性更高:
    Cloud DNS是Google维护的高可用托管服务,具备完善的故障恢复机制,不会出现集群内部DNS Pod异常、连接中断这类问题,能大幅提升DNS解析的稳定性。

迁移注意事项

  • 你的集群版本1.28.10-gke.1075001完全支持Cloud DNS for GKE,无版本兼容性问题
  • 建议先在测试集群或非核心业务节点验证迁移效果,确认DNS解析速度和稳定性符合预期后再推广到生产环境
  • GKE启用Cloud DNS for GKE时会自动配置Pod的DNS指向,无需手动修改/etc/resolv.conf,但要确保没有自定义DNS配置覆盖默认设置

其他可选永久修复方案

如果暂时不想迁移到Cloud DNS,也可以尝试以下方案:

  • 升级集群版本:该kube-dns的watch连接EOF异常可能在后续GKE版本中已被修复,建议升级到最新稳定版(如1.29或1.30系列)
  • 替换为CoreDNS:GKE新版本默认使用CoreDNS,其与API Server的交互稳定性优于kube-dns,替换后可能解决该异常
  • 调整kube-dns参数:尝试修改kube-dns的watch重连策略、超时时间等参数,提升连接恢复能力

测试数据

直接访问服务IP(无延迟):

/app # time curl --location '<IP>:443/api/v1/ping'
pong
real    0m 0.00s
user    0m 0.00s
sys 0m 0.00s

访问服务DNS地址(严重延迟):

/app # time curl --location '<service>.<namespace>.svc.cluster.local:443/api/v1/ping'
pong
real    0m 7.52s
user    0m 0.00s
sys 0m 0.00s

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:13:25