本文說明如何設定管理員叢集或使用者叢集的 DNS。
叢集的 DNS 設定會保存在名為 default
的 ClusterDNS 自訂資源中。這是叢集範圍內的資源,也就是說,這項資源沒有命名空間。
查看 ClusterDNS 資源
如要查看 ClusterDNS 資源,請執行下列指令:
kubectl --kubeconfig CLUSTER_KUBECONFIG get clusterdns default --output yaml
將 CLUSTER_KUBECONFIG 替換為叢集 kubeconfig 檔案的路徑。
DNS 設定位於 spec
部分。如果 spec
區段空白或遺失,叢集就會使用預設的 Kubernetes CoreDNS 設定。
變更 DNS 設定
為名為 default
的 ClusterDNS 資源建立資訊清單。視需要填寫 spec
。例如:
apiVersion: networking.gke.io/v1alpha1 kind: ClusterDNS metadata: name: default spec: upstreamNameservers: - serverIP: 8.8.8.8 - serverIP: 8.8.4.4 domains: - name: altostrat.com nameservers: - serverIP: 198.51.100.1 - name: my-own-personal-domain.com nameservers: - serverIP: 203.0.113.1 - serverIP: 203.0.113.2 serverPort: 54 googleAccess: private
將資訊清單儲存到名為 my-dns.yaml
的檔案,然後將資源套用到叢集:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-dns.yaml
ClusterDNS 規格
spec.upstreamNameservers
物件陣列,每個物件都有伺服器 IP 位址,以及選用的伺服器通訊埠。伺服器通訊埠的預設值為 53。
預設上游名稱伺服器。系統預設會將非叢集網域的要求轉送至這組伺服器。例如:
spec: upstreamNameservers: - serverIP: 8.8.8.8 - serverIP: 1.2.3.4 serverPort: 54
如果沒有為 upstreamNameservers
指定任何值,DNS 供應商會使用節點上的 /etc/resolv.conf
檔案,找出上游名稱伺服器清單。
spec.domains
特定網域的設定。這可覆寫 upstreamNameservers
中的設定。
您可以在這個部分為特定網域設定不同的上游名稱伺服器,與預設上游名稱伺服器分開。
您也可以為網域啟用查詢記錄功能。您可以針對任何指定網域或叢集網域 (cluster.local) 執行這項操作。
例如:
spec: domains: - name: altostrat.com nameservers: - serverIP: 198.51.100.1 - name: my-own-personal-domain.com nameservers: - serverIP: 203.0.113.1 - serverIP: 203.0.113.2 serverPort: 50000 - name: cluster.local queryLogging: true
spec.googleAccess
字串。如要讓 Google 網域解析為私人存取 IP 位址,請將此設定設為 "private"
。如要將 Google 網域解析為受限存取 IP 位址,請將此選項設為 restricted
。如果不想對 Google 網域進行特殊處理,請將此值設為 default
或移除。詳情請參閱設定內部部署主機的私人 Google 存取權。
例如:
spec: googleAccess: private
spec.orderPolicy
字串。如要指定上游伺服器的選取順序政策,預設為 "random"
步。支援的類型包括 "random"
、"round_robin"
和 "sequential"
。請注意,這項排序政策也適用於已定義的網域。如要進一步瞭解 policy
和各項設定的作用,請參閱 coredns 說明文件。
例如:
spec: orderPolicy: sequential