coredns配置文件详解
k8s域名解析
2种方式
-
集群内部域名(如 my-svc.default.svc.cluster.local)
-
Pod → CoreDNS(10.96.0.10)
-
CoreDNS 进入 kubernetes 插件
-
插件查 K8s API:找到 Service → 拿到 ClusterIP
-
直接返回给 Pod → 不走外网
-
-
外网域名(如 www.baidu.com)
-
Pod → CoreDNS
-
kubernetes 插件不认识,交给 forward 插件
-
forward 把请求发给上游 DNS(你配置的)
-
上游返回 IP → CoreDNS 回复 Pod
-
网络走宿主机网卡出去
-
coredns配置
[root@kmaster ~]# kubectl edit cm -n kube-system coredns
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf {
max_concurrent 1000
}
cache 30
loop
reload
loadbalance
}
kind: ConfigMap
metadata:
creationTimestamp: "2026-05-10T08:02:36Z"
name: coredns
namespace: kube-system
resourceVersion: "33482"
uid: 9fc05c49-3b66-414b-b533-561334631418
forward . /etc/resolv.conf {
max_concurrent 1000
}
-
. 匹配所有域名,全局匹配
-
forward: coredns转发插件,意思是把解析请求转发到外部的dns服务器
-
读取的是/etc/resolv.conf,这个配置作为上游的dns解析地址
主要作用:集群内所有pod的外网域名解析,全部转发到k8s节点宿主机配置的dns服务器上
注释掉的话集群pod就上不了网了
# 注释后,还需要重启才能生效
[root@kmaster ~]# kubectl rollout restart deployment -n kube-system coredns
不依赖节点dns,指定公共的dns解析外网
# 阿里云的dns解析
forward . 223.5.5.5 {
max_concurrent 1000
}
# 重启
[root@kmaster ~]# kubectl rollout restart deployment -n kube-system coredns
业务pod--->节点网络--->coredns---> 宿主机网卡----> 公共dns

浙公网安备 33010602011771号