1、 版本
KubeSphere 2.1.1
2、 DNS解析过程
1)通过容器内的/etc/resolv.conf(默认配置为CoreDNS的IP地址(默认为169.254.25.10))的search配置向nameserver配置的DNS服务器发送解析指令,会根据search在需解析的地址后添加一个后缀(默认依次添加的后缀是{project_name}.svc.cluster.local、svc.cluster.local、cluster.local);如果需要解析的地址的”.”大于等于5个(/etc/resolv.conf的options ndots配置项),那么不添加后缀。
2)CoreDNS对地址进行解析,如果hosts中配置了对应地址的IP,则会返回对应IP。否则会再丢到nodelocaldns去解析。此处有一个坑,如果需要解析的地址不符合search中配置的后缀形式,那么hosts是不会发生作用的!!!
3)nodelocaldns会从宿主机上下载/etc/resolv.conf作为自己的/etc/resolv.conf,然后nodelocaldns根据自己的/etc/resolv.conf进行解析。如果解析成功,返回IP,否则返回无法解析host name。
3、 局域网服务器访问配置方式
有两种方式:
1) 前提是局域网服务器的名称符合容器中的/etc/resolv.conf配置的search的后缀名,这种情况下可以将局域网服务器的名称和对应IP配置在CoreDNS的hosts中。
2) 在局域网内搭建一个DNS服务器,并且确保这个DNS服务器可以解析需要访问的局域网中的服务器。然后将这个DNS服务器的IP地址配置到各个node服务器的/etc/resolv.conf中作为一个nameserver,然后重新部署nodelocaldns。