最后更新于

k8s全局设置pod的dns来实现域名host配置


有时候我经常会遇到配置host的需求,即不在云端配置域名解析,而是本地直接配置host绑定域名与ip关系,而在k8s环境中pod由k8s进行编排,pod时常会因某些原因而销毁重启,在k8s环境中如何配置host呢?我们可以通过k8s的coredns来配置域名与ip绑定关系。

🔧 配置CoreDNS

找到命名空间kube-system的ConfigMap:coredns

kind: ConfigMap
apiVersion: v1
metadata:
  name: coredns
  namespace: kube-system
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
        }
        hosts {
           10.10.0.101 www.example.com
           fallthrough
        }
        prometheus :9153
        forward . /etc/resolv.conf {
           max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }

📝 添加域名映射

参考如上示例,在hosts下添加:

10.10.0.101 www.example.com

🔄 应用配置

修改完成后,需要重启CoreDNS使配置生效:

kubectl rollout restart deployment/coredns -n kube-system

✅ 验证配置

创建测试Pod验证DNS解析:

kubectl run test-dns --image=busybox --rm -it -- nslookup www.example.com

通过这种方式,可以为整个Kubernetes集群的所有Pod统一配置域名解析,实现类似hosts文件的功能。