K8S 节点自定义DNS被重写故障

文章讲述了在K8s集群中,由于Pod需要访问内网地址而公网DNS无法解析的问题。K8s自动重写/etc/resolv.conf导致手动添加的内网DNS配置被覆盖。提出了三种解决方案:1)使用ConfigMap挂载hosts文件;2)在CoreDNS中增加A记录;3)启用CoreDNS的proxy插件读取宿主机的DNS配置。推荐方案3,因为它能统一处理不同环境的DNS解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

故障场景:

k8s集群内pod需要访问sms.devhub.com获取数据,但是它是一个内网地址,公网DNS无法解析,所以需要在node节点的resolve.conf 添加内网的NDS服务器地址来解决问题,刚添加后是正常的,但是过了几分钟后先又解析不了,检查发现添加的resolve.conf被还原了。

故障原因:

K8s会重写/etc/resolv.conf文件以确保Pod中的DNS解析正确。因为在k8s集群中,Pod可能会被调度到不同的节点上,每个节点可能会有不同的DNS配置。因此,k8s会在每个节点上生成一个新的/etc/resolv.conf文件,并将其复制到每个Pod中,以确保Pod中的DNS解析与节点上的DNS解析一致。

Kubernetes会在每个节点上运行一个名为kubelet的服务,该服务负责管理节点上的Pod。kubelet会通过读取/etc/kubernetes/kubelet.conf文件获取Kubernetes集群中的DNS服务器地址,然后使用这些地址生成新的/etc/resolv.conf文件。kubelet会定期检查/etc/resolv.conf文件是否需要更新,并在必要时重新生成它。

解决方案1

 使用 ConfigMap 来存储 hosts 文件的内容,然后将 ConfigMap 挂载到 Pod 中作为一个文件,从而实现在 Pod 启动的节点增加 hosts 的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值