通過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種方法會導致訪問集群內部域名時又出現問題,只能用於臨時規避,最好時更改集群的主域名