踩坑記:k8s的pod無法通過域名訪問外網


通過kubeoperator安裝k8s集群,因把集群的主域名和在用的公共域名設為相同,導致無法通過域名訪問外網

在用的公共域名再DNS提供商設置泛域名,把找不到的子域名重定向到固定頁面

集群的主域名寫入宿主機的/etc/resolve.conf的search域

pod繼承宿主機的/etc/resolve.conf,其中nameserver為k8s的dns服務(coredns),使得訪問任何域名都會先被coredns解析,檢查是否為集群內部服務,若不是,再使用宿主機的dns解析

在pod內訪問任何外網域名都會被先加上主域名后綴去解析,結果都被DNS重定向

解決方式:

  1. 集群的主域名不要和在用的公共域名重合
  2. 將deployment的dnsPolicy設為Default,使得pod的dns直接為宿主機的dns,而不是集群coredns
  3. 調整dnsConfig中的ndots,將其調為1或o,使得訪問的域名只有點數小於1或無時,才會先加上search域去解析

以上第2和3種方法會導致訪問集群內部域名時又出現問題,只能用於臨時規避,最好時更改集群的主域名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM