在Kubernetes中,為應用配置Pod的DNS策略可以控制Pod如何訪問DNS服務,以及如何處理DNS解析,確保Pod能夠找到其他服務並與服務通訊。本文介紹在建立應用時,如何為應用設定Pod的DNS策略、DNS配置和網域名稱別名。
操作步驟
登入EDAS控制台,在左側導覽列,單擊 ,在頂部功能表列選擇地區並在頁面上方選擇所屬微服務空間,然後在應用列表頁面左上方,單擊建立應用。
在應用基本資料頁簽,完成相關配置後,單擊下一步。
在應用配置頁簽,設定應用的環境資訊、基本資料、部署方式和資源參數,設定完成後單擊下一步。
在應用進階設定頁簽展開DNS配置,並根據您的業務需求配置DNS,然後在頁面最下方單擊下一步。
配置項
描述
DNS策略(dnsPolicy)
目前支援通過DNS策略(dnsPolicy)欄位為每個Pod配置不同的DNS策略。
ClusterFirst:通過CoreDNS做網域名稱解析,Pod內/etc/resolv.conf配置的DNS服務地址是叢集DNS服務的kube-dns地址。該策略是叢集工作負載的預設策略。
ClusterFirstWithHostNet:結合hostNetwork網路模式使用,使Pod既能解析Kubernetes內部服務的網域名稱,也能解析外部網域名稱。
Default:Pod直接繼承叢集節點的網域名稱解析配置。即在叢集中直接使用ECS的/etc/resolv.conf檔案(檔案內配置的是阿里雲DNS服務)。
None:忽略叢集DNS策略,需要您提供DNS配置(dnsConfig)欄位來指定DNS配置資訊。
DNS配置(dnsConfig)
DNS配置(dnsConfig)中的參數說明如下:
nameserver:將用作Pod的DNS伺服器的IP地址清單。最多可以指定3個IP地址。
說明當Pod的DNS策略(dnsPolicy)設定為None時,列表必須至少包含一個IP地址,否則此屬性是可選的。列出的DNS的IP列表將合并到基於DNS策略(dnsPolicy)產生的網域名稱解析檔案的nameserver欄位中,並重複資料刪除的地址。
searches:Pod中主機名稱尋找的DNS搜尋域列表。此屬性是可選的,指定後,提供的列表將合并到從所選DNS策略(dnsPolicy)產生的基本搜尋網域名稱中,並重複資料刪除的網域名稱。Kubernetes最多允許6個搜尋域。
options:可選的對象列表,其中每個對象可以具有名稱屬性(必需)和變數值屬性(可選)。此屬性中的內容將合并到從指定的DNS策略(dnsPolicy)產生的選項中,並重複資料刪除的條目。
網域名稱別名(hostAliases)
通過hostAliases允許為Pod中的hosts檔案增加本地區名解析條目。
IP地址:主機列表被解析到的目標IP地址。
主機名稱:將指定的主機解析到IP地址,多個主機名稱通過英文半形逗號(,)分隔。
完成設定後單擊建立應用。
完成設定後單擊建立應用,然後在應用建立完成頁簽,單擊確定建立應用。
在應用變更預檢確認對話方塊,單擊開始預檢。
在應用變更預檢確認的下一頁,確認預檢項和預檢結果,單擊繼續。
可選:如您有更改以上預檢項,請單擊重新檢測。
應用建立可能需要幾分鐘,建立過程中,可以通過查看變更記錄跟蹤應用的建立流程。建立完成後,返回應用總覽頁面,查看執行個體Pod的運行狀態。若運行狀態為運行中,說明應用發布成功。單擊Pod的運行狀態可以查看應用執行個體的工作負載(Deployment)、容器組(Pod)和進階配置資訊。
驗證結果
在應用總覽頁面,在基本資料地區,單擊運行狀態右側的點擊查看。
在容器組(Pod)地區,選擇需要驗證的Pod,單擊操作列的終端。
在終端頁面,執行以下命令,查看DNS設定是否已被寫入到
/etc/resolv.conf
檔案中。cat /etc/resolv.conf
相關文檔
關於建立或部署應用過程中的其他配置項,請參見使用預設應用來源建立K8s應用。
如需瞭解Kubernetes為Service和Pod建立的DNS記錄,請參見Service與Pod的DNS。