joeの小窝

Loading...

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

posted @ 2026-05-29 20:21  乔的港口  阅读(11)  评论(0)    收藏  举报