在k8s集群里,现在默认的dns解决方案都是coredns,coredns不光用来解析集群内部的地址,还需要能够解析集群外部的服务,例如内网的其他域名,甚至外网的其他域名。查看默认的coredns配置使用的命令是:
kubectl get configmap coredns -n kube-system -o yaml > coredns.yaml
然后就可以在生成的coredns.yml文件里查看到它的默认配置,在它的默认配置里有下面这样一行:
forward . /etc/resolv.conf
这一行的意思是,在内部的dns解析不了的时候,将请求重定向到/etc/resolv.conf
文件,而这个文件是它所在物理节点的默认配置。也就是说,它会使用物理节点的DNS配置来解析内网的或者外网的域名。
一般情况下,这种解析都是没有问题的,但是一些特殊情况下,会出现解析不了的情况,而且有时候可以解析,有时候又不能解析,这种现象非常奇怪,问题原因还没找到,找到了以后来补充,目前的怀疑对象是:
- DNS配置问题
- 镜像的问题。