DNS為Kubernetes叢集內的工作負載提供網域名稱解析服務,CoreDNS是Kubernetes叢集中預設內建的DNS伺服器,用於提供動態服務發現和網域名稱解析的能力,使得叢集內部的服務可以通過服務名相互訪問,無需知道具體的IP地址。本文主要介紹CoreDNS網域名稱解析原理和ACK Edge叢集中的CoreDNS。
CoreDNS網域名稱解析原理
序號 | 描述 |
① | 業務Pod(Pod Client)試圖訪問Nginx服務(Service Nginx)時,先會請求本地DNS設定檔(/etc/resolv.conf)中指向的DNS伺服器(nameserver 172.21.0.10,即Service kube-dns)擷取服務IP地址,得到解析結果為172.21.0.30的IP地址。 |
② | 業務Pod(Pod Client)再直接發起往該IP地址的請求,請求最終經過Nginx服務(Service Nginx)轉寄到達後端的Nginx容器(Pod Nginx-1和Pod Nginx-2)上。 |
ACK Edge叢集中的CoreDNS
ACK Edge叢集將多地區、多網路域的計算裝置納入一個Kubernetes叢集進行統一管理,由於邊緣裝置分散,CoreDNS採用DaemonSet的方式運行在每個邊緣節點上。
當用戶端Pod訪問網域名稱時,它會先向本地的CoreDNS請求解析網域名稱,並使用解析得到的地址串連到目標服務或目標Pod。
關於CoreDNS的詳細配置,請參見如下ACK相關文檔:
ACK Edge叢集中暫不支援NodeLocal DNSCache 以及ExternalDNS服務。
文檔 | 是否適用 | 說明 |
適用 | 無 | |
適用 | 無 | |
部分適用 | ACK Edge叢集佔用了預設域的Hosts配置,如需自訂CoreDNS配置,請參見CoreDNS自訂配置。 | |
適用 | 無 | |
適用 | 無 | |
部分適用 |
|