K8S查询集群内部DNS
查看负责解析DNS的POD
[root@k8smaster1 ~]# kubectl get pods -n kube-system -l k8s-app=kube-dns
coredns-6d9c4b78f6-49zx2 1/1 Running 1 (14d ago) 20d
coredns-6d9c4b78f6-l24gg 1/1 Running 1 (14d ago) 20d
coredns-6d9c4b78f6-rflf5 1/1 Running 1 (14d ago) 20d
查看解析DNS端口
[root@k8smaster1 ~]# kubectl get svc -n kube-system -l k8s-app=kube-dns
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 100.69.0.10 <none> 53/UDP,53/TCP,9153/TCP 20d
查看可以解析哪些域名
kubectl get svc --all-namespaces -o jsonpath='{range .items[*]}{.metadata.name}{"."}{.metadata.namespace}{"."}svc.cluster.local ' | tr ' ' '\n'
查看COREDNS配置
[root@k8smaster1 ~]# kubectl -n kube-system get configmap coredns -o jsonpath='{.data.Corefile}'
.:53 { # 定义 CoreDNS 监听所有域名 (.),使用 53 端口
errors # 启用错误日志记录,当解析失败时记录错误
health # 启用健康检查接口,方便监控 CoreDNS 状态
log # 启用访问日志,记录每次 DNS 请求
kubernetes cluster.local in-addr.arpa ip6.arpa { # 启用 Kubernetes 插件,解析 cluster.local 域名及反向 DNS
pods insecure # 允许直接读取 Pod 的 DNS 记录(不安全模式)
fallthrough in-addr.arpa ip6.arpa # 如果无法解析反向域名请求,继续向下传递
ttl 30 # DNS 记录缓存时间为 30 秒
}
hosts { # 启用 hosts 插件,用于自定义静态主机名解析
fallthrough # 如果 hosts 中没有匹配的记录,则继续使用后续插件解析
}
prometheus :9153 # 启用 Prometheus 监控插件,监听 9153 端口,收集指标
forward . 10.6.10.11 # 将所有 DNS 查询转发到上游 DNS 服务器 10.6.10.11
cache 30 # 启用缓存插件,将 DNS 结果缓存 30 秒,提高查询效率
loop # 检测循环转发,防止 DNS 查询形成死循环
reload # 监控 Corefile 文件变化,自动重新加载配置
loadbalance # 对多个上游 DNS 服务器请求进行负载均衡(此处只有一个上游)
}