Files
homelab-wiki/services/k3s-dns.md
T

3.2 KiB
Raw Blame History

title, lifecycle, evidence, last_reviewed, last_verified
title lifecycle evidence last_reviewed last_verified
k3s 集群 DNS 使用说明 unknown configuration 2026-09-16 null

k3s 集群 DNS

本页说明 Pod 的 DNS 使用路径,依据 homelab-infra platform/k3s/Corefile.desired 与 coredns-custom.yaml。这些文件是配置意图与历史故障处理记录,未现场确认是否与运行配置完全一致。 LAN 主机通过 DHCP 使用 Blocky/路由器的现状见 LAN DNS,不能据此推导所有 Pod 的转发链。

应用如何使用

Pod 通常通过 Kubernetes DNS 解析 Service。跨 namespace 使用完整地址,例如 shared-postgresql-rw.shared-db.svc.cluster.local;同 namespace 的短名称按 Pod DNS 搜索域处理。 这类集群内部名称不是远程客户端的公共入口。

集群内访问 Authelia 或 Gitea 时继续使用 auth.ddupan.top、git.ddupan.top 的原有 URL, 避免把 OIDC issuer、证书名称或 Git remote 改成 IP 来绕过解析问题。

受权排障时,可在已有且具备 nslookup 的应用容器中执行以下只读查询:

nslookup kubernetes.default.svc.cluster.local.
nslookup dc1.ad.ddupan.top.
nslookup auth.ddupan.top.
nslookup git.ddupan.top.

末尾的点表示绝对域名,用于减少搜索域扩展对诊断的干扰。 四个查询分别覆盖集群 Service、AD 域和两个分流入口;本轮没有执行,也没有为此创建调试 Pod。 DNS 成功只证明解析路径,不证明应用认证和业务请求成功。

文件中声明的分流

名称范围 配置意图
cluster.local 与集群反向记录 CoreDNS Kubernetes 插件处理
ad.ddupan.top 直接转发 Samba AD DNS 192.168.10.5
auth.ddupan.top、git.ddupan.top A 记录返回 Envoy LAN 地址 192.168.10.127;AAAA 返回无数据
lab.ddupan.top、tail7e769.ts.net 本地返回 NXDOMAIN,阻止历史搜索域排列请求继续转发
其余请求 默认 Corefile 转发至 /etc/resolv.conf

最后一项的实际上游由运行环境的 resolver 文件决定。本轮没有读取现场文件, 不能将源码注释中的历史路由器上游描述当成今天所有节点的 resolver 配置。 对被本地拒绝的后缀新增用途前,应审查这一历史规则,而不是直接在外部 DNS 增加记录后假定 Pod 能解析。

缓存和修改入口

Corefile.desired 的默认 server block 配置 cache 30 与 serve_stale 1h immediate, 允许在该规则覆盖范围内暂用过期缓存条目;其他独立 server block 不自动继承这条缓存规则。 因此修改 DNS 记录后,缓存结果可能与权威记录暂时不同。 语义见 CoreDNS cache。

coredns-custom.yaml 声明 kube-system/coredns-custom,由 Corefile 的 custom import 使用。 Corefile.desired 的文件名本身不证明它已由 Flux 管理或已经应用。 变更前先确认该对象的管理入口,再审查影响范围;不要整份替换 CoreDNS 配置来修一个域名。

故障定位先区分集群 Service 解析、AD 转发、固定分流、默认上游和客户端搜索域。 依赖包括 CoreDNS、Kubernetes API、网络、Samba AD DNS 及默认上游; Authelia/Gitea 的业务可达性还依赖 Envoy 和各自后端。