在 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
|