场景: 测试环境k8s内部pod程序需要访问k8s集群外部的域名服务,之前是在pod写死hosts,域名多的情况下这种方式太难以维护。

实现使用外部dns也很简单,修改coredns.yaml文件即可

...
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
  labels:
      addonmanager.kubernetes.io/mode: EnsureExists
data:
  Corefile: |
    .:53 {
        errors
        health  
        kubernetes cluster.local  in-addr.arpa ip6.arpa {  #cluster.local集群域名
            pods insecure
            upstream
            fallthrough in-addr.arpa ip6.arpa
            ttl 30
        }
        prometheus :9153
        #forward . /etc/resolv.conf
        forward . 192.168.6.242
        cache 30
        loop
        reload
        loadbalance
    }
---
略...

修改forward . /etc/resolv.conf 成 forward . 192.168.6.242

重启coredns (先删除后创建)

测试

进入pod
ping 外部域名
能ping通证明成功。

Logo

开源、云原生的融合云平台

更多推荐