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