設定叢集的 DNS

本文說明如何為 Google Distributed Cloud 連結網路方案 設定網域名稱系統 (DNS) 供應商選項。叢集的 DNS 設定會保存在名為 default 的 ClusterDNS 自訂資源中。這項資源適用於整個叢集,因此不屬於任何命名空間。ClusterDNS 自訂資源適用於所有叢集類型。

建立 ClusterDNS 資源

為名為 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: default

如要將資訊清單儲存至名為 my-dns.yaml 的檔案,並將資源套用至叢集,請執行下列指令:

kubectl --kubeconfig KUBECONFIG apply -f my-dns.yaml

KUBECONFIG 替換為叢集 kubeconfig 檔案的路徑。

查看 ClusterDNS 資源

如要查看 ClusterDNS 資源,請執行下列指令:

kubectl --kubeconfig KUBECONFIG get clusterdns default --output yaml

KUBECONFIG 替換為叢集 kubeconfig 檔案的路徑。

ClusterDNS 規格

以下各節說明 ClusterDNS 自訂資源定義的各個部分,這些部分可用於設定叢集的 DNS。您隨時可以更新叢集的 ClusterDNS 資源。

spec.upstreamNameservers

使用 spec.upstreamNameservers 欄位,以物件陣列指定預設上游名稱伺服器。每個物件都有伺服器 IP 位址,以及 (選用) 伺服器通訊埠。伺服器通訊埠的預設值為 53。 系統預設會將非叢集網域的要求轉送至這組伺服器。

以下是 upstreamNameservers 設定範例:

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

如果沒有為 upstreamNameservers 指定任何值,DNS 供應商會使用節點上的 /etc/resolv.conf 檔案,找出上游名稱伺服器清單。

spec.domains

使用 spec.domains 欄位為特定網域設定不同的上游名稱伺服器。這些網域專屬名稱伺服器設定會覆寫 upstreamNameservers 中的設定。

您也可以為網域啟用查詢記錄功能。您可以為任何指定網域或叢集網域 (cluster.local) 啟用查詢記錄。

以下是 spec.domains 設定範例:

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

spec.googleAccess 欄位是字串,用於指定 Google 網域的處理方式。googleAccess 值會指定下列行為:

  • default:Google 網域不會享有特殊待遇。移除 googleAccess 欄位也會有相同效果。

  • private:只將 Google 網域解析為私人存取 IP 位址。

  • restricted:只將 Google 網域解析為受限存取的 IP 位址。

以下設定範例只會將 Google 網域解析為私人存取 IP 位址:

spec:
  googleAccess: private

詳情請參閱設定地端部署主機的 Private Google Access