全部產品
Search
文件中心

Container Compute Service:DNS概述

更新時間:Dec 11, 2024

DNS為Kubernetes叢集內的工作負載提供網域名稱解析服務。本文主要介紹Kubernetes叢集中DNS網域名稱解析原理和ACS叢集中預設內建的DNS伺服器CoreDNS。

Kubernetes叢集中DNS網域名稱解析原理

ACS叢集中kubelet的啟動參數有--cluster-dns=<dns-service-ip>--cluster-domain=<default-local-domain>,這兩個參數分別被用來設定叢集DNS伺服器的IP地址和主網域名稱尾碼。

ACS叢集預設部署了一套CoreDNS工作負載,並通過kube-dns的服務名暴露DNS服務。ACS部署的CoreDNS工作負載後端是兩個名為coredns的Pod,叢集會根據Pod內的配置,將網域名稱請求發往叢集DNS伺服器擷取結果。Pod內的DNS網域名稱解析設定檔為/etc/resolv.conf,檔案內容如下。

nameserver 172.xx.x.xx
search kube-system.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

圖 1. DNS解析原理樣本圖kube-dns(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)上。

關於叢集DNS網域名稱解析原理的詳細說明,請參見DNS原理和配置說明

CoreDNS介紹

CoreDNS是Kubernetes叢集中負責DNS解析的組件,能夠支援解析叢集內部自訂服務網域名稱和叢集外部網域名稱。CoreDNS具備豐富的外掛程式集,在叢集層面支援自建DNS、自訂hosts、CNAME、rewrite等需求。與Kubernetes一樣,CoreDNS專案由 CNCF託管。

ACS叢集使用CoreDNS負責叢集的服務發現,您可以根據不同使用情境配置CoreDNS及使用CoreDNS提升叢集DNS QPS效能: