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

AWS EKS集群Pod内nameserver与预设Service网段不匹配问题求助

解决方案

根因说明

Pod内的/etc/resolv.conf是kubelet在创建Pod时自动注入的,其中nameserver的取值来自kubelet启动参数中的--cluster-dns配置。你遇到的问题是集群调整Service网段和kube-dns的ClusterIP后,节点上的kubelet配置没有同步更新,仍然使用了旧的172.20.0.10作为DNS地址。


具体调整步骤

步骤1:确认kubelet配置

登录任意一个EKS工作节点,执行命令查看kubelet的启动参数,确认当前cluster-dns的取值:

ps aux | grep kubelet

返回结果中可以看到--cluster-dns=172.20.0.10的配置,确认是旧地址。

步骤2:更新节点启动配置

EKS节点的kubelet配置统一在EC2启动模板/启动配置的用户数据中定义,统一修改即可避免逐个节点调整:

  1. 打开AWS EC2控制台,找到你的EKS节点组使用的启动模板/启动配置
  2. 找到**用户数据(User Data)**配置段,修改KubeletConfiguration中的clusterDNS值为10.10.0.10,参考配置如下:
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
clusterDNS:
  - 10.10.0.10
clusterDomain: cluster.local
  1. 保存为新的启动模板版本。

步骤3:滚动更新节点组

进入EKS控制台,找到对应集群的节点组,将节点组关联的启动模板切换为刚才保存的新版本,选择滚动更新模式替换所有旧节点。

步骤4:验证配置生效

新节点加入集群后,新建测试Pod验证配置:

kubectl run -it --rm test-dns --image=alpine -- cat /etc/resolv.conf

返回结果中nameserver为10.10.0.10即配置生效,已经运行的旧Pod需要重建后才会加载新的DNS配置。


临时生效方案(无需重启节点)

如果暂时不需要全量更新节点,可以逐个登录现有工作节点修改配置:

  1. 编辑kubelet配置文件,默认路径为/etc/kubernetes/kubelet/kubelet-config.json,将clusterDNS字段的值改为10.10.0.10
  2. 重启kubelet服务生效:
systemctl daemon-reload
systemctl restart kubelet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 12:30:02