主要观点:
- 调查 Kubernetes 中的警告消息“DNSConfigForming...Nameserver 限制被超出,一些 nameserver 被忽略”,深入研究 Linux 和 Kubernetes 中的 DNS 解析。
- Kubernetes 提供基于 DNS 的服务发现,各命名空间的 pod 可通过特定 DNS 条目获取服务的 ClusterIP。
- Linux 上 DNS 解析通过 /etc/resolv.conf 配置,包括定义 name server 和搜索域等,有相关限制和细节。
- 还通过 /etc/nsswitch.conf 进行名称查找服务配置,不同系统和库(如 glibc 和 musl)的 DNS 解析方式有所不同。
- Kubernetes 中的 kube-dns 服务用于 DNS 解析,其配置和相关细节,以及可通过设置 dnsPolicy 改变 pod 的 DNS 配置。
- 解释了如何避免“Nameserver 限制被超出”的警告,手动编辑 /etc/resolv.conf 可能不持久,可通过控制 kubelet 配置指向自定义 resolv.conf 文件等方法,但在某些场景下较复杂。
关键信息:
- Kubernetes 中不同名称的 DNS 解析规则,如服务名、pod 名等的解析顺序。
- Linux 系统中 DNS 相关配置文件(resolv.conf、nsswitch.conf 等)的作用和细节。
- 不同环境(如 dual stack IPv4/IPv6)下 name server 的配置情况及对 Kubernetes 的影响。
- 可通过设置 dnsPolicy 改变 pod 的 DNS 配置,以及各种方法避免“Nameserver 限制被超出”的警告及各自的优缺点。
重要细节:
- Kubernetes 中早期版本使用 kube-dns 服务,现在也可使用 CoreDNS 或其他替代方案。
- Alpine Linux 使用 musl 库,其 DNS 解析方式与 glibc 不同。
- systemd-resolved 相关的 DNS 配置及对 Kubernetes 的影响,如 /etc/nsswitch.conf 中的 resolve 模块等。
- 在某些场景下(如多网络接口、使用 managed 节点等)避免警告的方法较复杂,需要考虑多个因素。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。