Pod的resolve.conf中nameserver非CoreDNS集群IP如何修复?--cluster-dns在哪配置?
Pod内resolv.conf nameserver非CoreDNS集群IP问题修复方案
- 首先确认CoreDNS的正确集群IP,执行命令
kubectl get svc -n kube-system kube-dns,返回结果中的CLUSTER-IP字段即为目标地址,先记录该值。 - 排查是否为个别Pod配置异常:如果只有少量Pod出现问题,检查对应Pod的
dnsPolicy字段,若配置为Default或None且未手动指定DNS服务器,会导致nameserver异常,修改为ClusterFirst后重建Pod即可。 - 排查集群全局kubelet配置:如果所有新建Pod都存在该问题,需要修正kubelet的
--cluster-dns参数配置,配置方法参考下文的参数位置说明,修改完成后执行systemctl daemon-reload && systemctl restart kubelet重启所有节点的kubelet服务生效。 - 所有已创建的异常旧Pod必须删除重建,才会加载更新后的DNS配置。
--cluster-dns启动标识配置位置 根据集群部署方式不同,配置位置分为以下几类:
- 手动部署kubelet场景:配置在kubelet的systemd启动配置文件中,常见路径为
/etc/systemd/system/kubelet.service、/etc/systemd/system/kubelet.service.d/目录下的自定义.conf配置文件,参数直接附加在kubelet启动命令行中。 - kubeadm部署场景:
- 运行中集群的全局配置存储在
kube-system命名空间的kubeadm-configConfigMap中,修改后可通过kubeadm upgrade node命令同步到所有节点的kubelet本地配置 - 各节点本地配置存放在
/var/lib/kubelet/config.yaml文件中,对应YAML字段为clusterDNS
- 运行中集群的全局配置存储在
- 二进制部署集群场景:一般配置在kubelet的环境变量配置文件中,常见路径为
/etc/kubernetes/kubelet、/etc/sysconfig/kubelet。
内容的提问来源于stack exchange,提问作者prime
相关产品推荐
相关产品推荐

