DNS für einen Cluster konfigurieren

In diesem Dokument wird gezeigt, wie Sie DNS-Anbieteroptionen (Domain Name System) für Google Distributed Cloud konfigurieren. Die DNS-Konfiguration für einen Cluster wird in einer benutzerdefinierten ClusterDNS-Ressource mit dem Namen default gespeichert. Diese Ressource ist clusterübergreifend. Das heißt, sie hat keinen Namespace. Die benutzerdefinierte ClusterDNS-Ressource gilt für alle Clustertypen.

ClusterDNS-Ressource erstellen

Erstellen Sie ein Manifest für eine ClusterDNS-Ressource mit dem Namen default. Füllen Sie die spec aus, um die gewünschten Ressourceneinstellungen zu konfigurieren. Beispiel:

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

Führen Sie den folgenden Befehl aus, um das Manifest in einer Datei mit dem Namen my-dns.yaml zu speichern und die Ressource auf den Cluster anzuwenden:

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

Ersetzen Sie KUBECONFIG durch den Pfad zur kubeconfig-Datei des Clusters.

ClusterDNS-Ressource ansehen

Führen Sie den folgenden Befehl aus, um die ClusterDNS-Ressource anzusehen:

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

Ersetzen Sie KUBECONFIG durch den Pfad zur kubeconfig-Datei des Clusters.

ClusterDNS-Spezifikation

In den folgenden Abschnitten werden die Teile der benutzerdefinierten ClusterDNS-Ressourcendefinition beschrieben, die Sie zum Konfigurieren von DNS für Ihre Cluster verwenden. Sie können die ClusterDNS-Ressource für einen Cluster jederzeit aktualisieren.

spec.upstreamNameservers

Verwenden Sie das Feld spec.upstreamNameservers, um Ihre standardmäßigen vorgelagerten Nameserver mit einem Array von Objekten anzugeben. Jedes Objekt hat eine Server-IP-Adresse und optional einen Serverport. Der Standardwert für den Serverport ist 53. Anfragen für Nicht-Cluster-Domains werden standardmäßig an diese Gruppe von Servern weitergeleitet.

Hier ein Beispiel für eine upstreamNameservers-Konfiguration:

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

Wenn Sie für upstreamNameservers keine Werte angeben, verwendet der DNS-Anbieter die Datei /etc/resolv.conf auf dem Knoten, um die Liste der vorgelagerten Nameserver zu ermitteln.

spec.domains

Verwenden Sie das Feld spec.domains, um verschiedene vorgelagerte Nameserver für bestimmte Domains zu konfigurieren. Diese domainspezifischen Nameserver-Einstellungen überschreiben die Konfiguration in upstreamNameservers.

Sie können auch das Abfrage-Logging für eine Domain aktivieren. Sie können das Abfrage-Logging für jede angegebene Domain oder die Cluster-Domain cluster.local aktivieren.

Hier ein Beispiel für eine spec.domains-Konfiguration:

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

Das Feld spec.googleAccess ist ein String, mit dem die DNS-Auflösung für Domains konfiguriert wird, die von globalen Google APIs und Diensten verwendet werden. Dieses Feld akzeptiert die folgenden Werte:

  • default: Standardmäßig werden bei der DNS-Auflösung globale Google API-Domains den Standard-IP-Adressen zugeordnet. Der Cluster passt die DNS-Auflösung für globale Google API-Domains nicht an. Weitere Informationen finden Sie unter IP-Adressen für die Standarddomains. Wenn Sie im Feld googleAccess keinen Wert angeben, verwendet das System default.

  • private: Die DNS-Auflösung für globale Google API-Domains wird den IP Adressen zugeordnet, die von private.googleapis.com verwendet werden.

  • restricted: Die DNS-Auflösung für globale Google API-Domains wird den IP Adressen zugeordnet, die von restricted.googleapis.com verwendet werden.

Das folgende Beispiel zeigt, wie Sie die DNS-Auflösung so festlegen, dass private.googleapis.com verwendet wird:

spec:
  googleAccess: private

Weitere Informationen finden Sie unter Privaten Google-Zugriff für lokale Hosts konfigurieren.

spec.orderPolicy

Das Feld spec.orderPolicy ist ein String. Verwenden Sie dieses Feld, um die Reihenfolgerichtlinie anzugeben, nach der vorgelagerte Server ausgewählt werden.

  • Der Standardwert ist random.
  • Unterstützte Typen sind random, round_robin und sequential.
  • Diese Reihenfolgerichtlinie gilt auch für definierte Domains.

Weitere Informationen zu policy und den Auswirkungen der einzelnen Konfigurationen finden Sie in der CoreDNS-Dokumentation.

Hier ein Beispiel für eine spec.orderPolicy-Konfiguration:

spec:
  orderPolicy: sequential