自搭建dns无法生效

  • Choerodon平台版本: 0.6.0

  • 遇到问题的执行步骤:
    我需要内网假域名部署,于是自搭建了一个dns

dnsmasq -q -d -h -R -H /tmp/hosts
其中/tmp/hosts为 (服务器本机内网ip 我自己的域名)
192.168.31.188 gitlab.breezesoft.cn
192.168.31.188 minio.breezesoft.cn
192.168.31.188 harbor.breezesoft.cn
192.168.31.188 chart.breezesoft.cn
192.168.31.188 api.breezesoft.cn
192.168.31.188 notify.breezesoft.cn
192.168.31.188 devops.breezesoft.cn
192.168.31.188 c7n.breezesoft.cn
192.168.31.188 wiki.breezesoft.cn

经测试dns是否正常:

root@ubuntu:~/k8s/c7nctl-0.19.0# nslookup wiki.breezesoft.cn 192.168.31.188
Server:		192.168.31.188
Address:	192.168.31.188#53

Name:	wiki.breezesoft.cn
Address: 192.168.31.188
没有任何问题

我创建了coredns的configmap kube-dns.yaml

apiVersion: v1
kind: ConfigMap
metadata:
    name: kube-dns
    namespace: kube-system
    labels:
        addonmanager.kubernetes.io/mode: EnsureExists
data:
    tubDomains: |
       {"breezesoft.cn":["192.168.31.188"]}
    upstreamNameservers: |
        ["8.8.8.8", "8.8.4.4"]

执行:

kubectl create -f kube-dns.yaml
configmap/kube-dns created

启停coredns
kubectl scale deployment -n kube-system --replicas=0 coredns
10s后
kubectl scale deployment -n kube-system --replicas=2 coredns

配置dnstest.yaml文件;
touch dnstest.yaml
vim dnstest.yaml

apiVersion: v1
kind: Pod
metadata:
  name: dnstest
  namespace: default
spec:
  dnsPolicy: ClusterFirst
  containers:
  - name: busybox
    image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

创建Pod

kubectl create -f dnstest.yaml
 

nslookup查询wiki.breezesoft.cn,返回定义的ip地址

root@ubuntu:~/k8s/c7nctl-0.19.0# kubectl exec -it dnstest nslookup wiki.breezesoft.cn
Server:		10.244.64.10
Address:	10.244.64.10:53

** server can't find wiki.breezesoft.cn: NXDOMAIN

*** Can't find wiki.breezesoft.cn: No answer

command terminated with exit code 1

  • 文档地址:

  • 环境信息(如:节点信息):

  • 报错日志:

  • 原因分析:
    个人感觉是通过configMap 配置了coredns,却没有生效,但是不知道如何生效

  • 疑问:
    希望大佬能协助解决如何让自搭建的dns服务器接入coredns,并且能够提供帮助使其生效,如何排查问题(因为自己对这方面新手).

kube-dns是kube-dns的配置,不是coredns的配置,请先确认你用的是哪一个

我不是很懂k8s,我一直认为是同一个,sorry,哪个能好使就用哪个,不挑剔

编辑器的格式不能用,修改host参考这里吧:
https://blog.csdn.net/kunyus/article/details/88841159

猪齿鱼默认使用的coreDNS,如果没有外网域名的话,可以考虑修改coreDNS的配置访问域名:
kubectl edit cm coredns -n kube-system
在coredns 的 configMap中添加hosts

apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health
        hosts {
            100.64.139.66 minio.chinamcloud.com
            100.64.139.66 registry.chinamcloud.com
            100.64.139.66 gitlab.chinamcloud.com
            fallthrough
        }
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system

大佬nb,深深的仰望

我也是同样问题,内网dns配置了域名解析,在centos主机上能ping通域名,同时也配置了这个configmap里的hosts,也把coredns重建了,但是在dns test pod里面测试 仍然解析不到。