Featured image of post Coredns 添加主机名解析,无法解析

Coredns 添加主机名解析,无法解析

Coredns 添加主机名解析,nodelocaldnscache无法解析

在 coredns 的 configmap 添加了主机名解析

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.: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.10.155 api-server01 #添加了这些
          10.10.10.156 api-server02
          10.10.10.157 api-server03
          10.10.10.158 api-server04
          10.10.10.159 api-server05
          fallthrough
        }
        prometheus :9153
        forward . /etc/resolv.conf {
           max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }

通过 nodelocaldnscache 无法解析此主机名

1
2
3
4
5
6
nslookup api-server01 169.254.25.10

Server:     169.254.25.10
Address:    169.254.25.10#53

*** Can't find api-server01: No answer

通过 coredns 却是正常的

1
2
3
4
5
6
7
nslookup api-server01 11.253.0.3

Server:     11.253.0.3
Address:    11.253.0.3#53

Name:   api-server01
Address: 10.10.10.155

原因分析:

查看 nodelocaldns 的 configmap 有如下部分

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Corefile: |
    cluster.local:53 {
        errors
        cache {
            success 9984 30
            denial 9984 5
        }
        reload
        loop
        bind 169.254.25.10
        forward . 11.253.0.3 {
            force_tcp
        }
        prometheus :9253
        health 169.254.25.10:9254
    }
……
    .:53 {
        errors
        cache 30
        reload
        loop
        bind 169.254.25.10
        forward . /etc/resolv.conf
        prometheus :9253
    }

可以看到符合 k8s cluster.local 格式的域名 forward 是 coredns ,而其他的域名 forward 是 /etc/resolv.conf (主机系统的 dns),所以是解析不到自己添加在 coredns 中的主机名的。

解决方法:修改其他域名的 forward 也走 coredns

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    .:53 {
        errors
        cache 30
        reload
        loop
        bind 169.254.25.10
        forward . 11.253.0.3 {
            force_tcp
        }
        prometheus :9253
Licensed under CC BY-NC-SA 4.0
一个默默无闻的工程师的日常
Built with Hugo
主题 StackJimmy 设计