K3s pod 内部 resolv.conf 被覆盖导致 DNS 解析异常
发布时间 - 2026-01-18 00:00:00 点击率:次K3s覆盖/etc/resolv.conf是为启用CoreDNS+dnsmasq本地DNS代理,设nameserver 127.0.0.1,但基础镜像常无dnsmasq导致解析失败;需显式配置dnsPolicy或挂载自定义resolv.conf修复。
在 K3s 集群中,Pod 启动后 /etc/resolv.conf 被覆盖为仅含 nameserver 127.0.0.1(或指向 CoreDNS 的本地代理),但实际 CoreDNS 并未监听该地址,或 Pod 网络无法访问该地址,从而导致 DNS 解析失败。
为什么 K3s 会覆盖 resolv.conf?
K3s 默认使用 CoreDNS + dnsmasq 插件(通过 k3s-agent 内置的轻量 DNS 代理)提供集群 DNS 服务。它会自动将 Pod 的 resolv.conf 设置为:
-
nameserver 127.0.0.1(指向 Pod 内部的dnsmasq或coredns本地监听) search.svc.cluster.local svc.cluster.local cluster.local options ndots:5
但这个机制依赖两个前提:Pod 必须运行在支持 hostNetwork: false + dnsPolicy: ClusterFirst 的标准 CNI 网络下,且容器内需有 dnsmasq 或能响应 127.0.0.1:53 的 DNS 代理进程——而大多数基础镜像(如 Alpine、BusyBox、Distroless)并不自带,也**不会自动注入**。
常见触发场景
以下情况容易暴露该问题:
- 使用
hostNetwork: true的 Pod:K3s 不会注入127.0.0.1,但可能仍覆盖原有resolv.conf为错误内容 - 自定义镜像未安装
dnsmasq或coredns,却继承了 K3s 的默认dnsPolicy - 使用
initContainer或多阶段构建时,resolv.conf被挂载覆盖或写入失败
- K3s 版本升级后,
dnsPolicy行为变更(如 v1.25+ 对hostNetworkPod 的处理更严格)
快速修复方法
根据实际需求选择一种或组合使用:
-
显式指定 DNS 配置:在 Pod spec 中设置
dnsPolicy: None并手动提供dnsConfig -
回退到集群 DNS:改用
dnsPolicy: ClusterFirstWithHostNet(仅限hostNetwork: true场景) -
跳过自动覆盖:挂载只读空文件覆盖
/etc/resolv.conf,例如:volumeMounts:- name: resolv-confmountPath: /etc/resolv.confreadOnly: truevolumes:- name: resolv-confconfigMap:name: custom-resolv
其中custom-resolv包含你期望的nameserver 10.43.0.10(K3s CoreDNS ClusterIP) -
验证 CoreDNS 可达性:进入 Pod 执行
nslookup kubernetes.default.svc.cluster.local 10.43.0.10,确认 CoreDNS 是否正常响应
长期建议
避免“覆盖即生效”的隐式行为:
- 所有生产 Pod 显式声明
dnsPolicy,不依赖默认值 - 基础镜像中预装
dnsmasq(仅当需127.0.0.1:53代理)或统一使用ClusterFirst+10.43.0.10 - 通过
kubectl get svc -n kube-system确认 CoreDNS Service 的 ClusterIP(通常是10.43.0.10),并在文档中标注为集群 DNS 地址 - 若使用
hostNetwork,优先考虑dnsPolicy: Default(复用宿主机resolv.conf),并确保宿主机 DNS 可用
# ai
# dns
# kubernetes
# 为什么
# red
# 继承
# Namespace
# default
# 镜像
# 自定义
# 并在
# 自带
# 仅限
# 设置为
# 它会
# 跳过
# 退到
# 默认值
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
图册素材网站设计制作软件,图册的导出方式有几种?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
微信小程序 canvas开发实例及注意事项
中山网站推广排名,中山信息港登录入口?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
如何用VPS主机快速搭建个人网站?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
详解jQuery中的事件
如何构建满足综合性能需求的优质建站方案?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在万网自助建站中设置域名及备案?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何快速生成高效建站系统源代码?
历史网站制作软件,华为如何找回被删除的网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
js实现获取鼠标当前的位置
如何在云虚拟主机上快速搭建个人网站?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在云指建站中生成FTP站点?
linux写shell需要注意的问题(必看)
如何在阿里云域名上完成建站全流程?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
昵图网官方站入口 昵图网素材图库官网入口
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
如何在新浪SAE免费搭建个人博客?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何快速搭建自助建站会员专属系统?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
如何在万网自助建站平台快速创建网站?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
实现点击下箭头变上箭头来回切换的两种方法【推荐】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
java获取注册ip实例
如何在IIS中新建站点并解决端口绑定冲突?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Android 常见的图片加载框架详细介绍
iOS发送验证码倒计时应用
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程


