通过kubeoperator安装k8s集群,因把集群的主域名和在用的公共域名设为相同,导致无法通过域名访问外网
在用的公共域名再DNS提供商设置泛域名,把找不到的子域名重定向到固定页面
集群的主域名写入宿主机的/etc/resolve.conf的search域
pod继承宿主机的/etc/resolve.conf,其中nameserver为k8s的dns服务(coredns),使得访问任何域名都会先被coredns解析,检查是否为集群内部服务,若不是,再使用宿主机的dns解析
在pod内访问任何外网域名都会被先加上主域名后缀去解析,结果都被DNS重定向
解决方式:
- 集群的主域名不要和在用的公共域名重合
- 将deployment的dnsPolicy设为Default,使得pod的dns直接为宿主机的dns,而不是集群coredns
- 调整dnsConfig中的ndots,将其调为1或o,使得访问的域名只有点数小于1或无时,才会先加上search域去解析
以上第2和3种方法会导致访问集群内部域名时又出现问题,只能用于临时规避,最好时更改集群的主域名