DNS für einen Cluster konfigurieren

In diesem Dokument wird gezeigt, wie Sie DNS-Anbieteroptionen (Domain Name System) für GKE on Bare Metal 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 spec nach Bedarf aus. 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.0.1
    - name: my-own-personal-domain.com
      - serverIP: 203.0.113.1
      - serverIP: 203.0.113.2
        serverPort: 54
  googleAccess: private

Speichern Sie das Manifest in einer Datei mit dem Namen my-dns.yaml und wenden Sie die Ressource auf den Cluster an:

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

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

ClusterDNS-Ressource ansehen

So rufen Sie die ClusterDNS-Ressource auf:

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

Geben Sie Ihre standardmäßigen vorgelagerten Nameserver mit einem Array von Objekten an, von denen jedes eine Server-IP-Adresse und optional einen Serverport hat. Der Standardwert für den Serverport ist 53. Anfragen für Nicht-Cluster-Domains werden standardmäßig an dieses Array von Serveradressen 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/resolve.conf auf dem Knoten, um die Liste der vorgelagerten Nameserver zu ermitteln.

spec.domains

Konfiguration für bestimmte Domains. Verwenden Sie diesen Abschnitt, 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.

Beispiel:

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 203.0.113.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 198.51.100.1
    - serverIP: 198.51.100.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

Aufzählung (private, restricted oder default). Gibt an, wie Google-Domains behandelt werden. googleAccess-Werte geben das folgende Verhalten an:

  • default: Keine spezielle Behandlung für Google-Domains. Das Entfernen des Felds googleAccess hat denselben Effekt.

  • private: Google-Domains werden nur in IP-Adressen mit privatem Zugriff aufgelöst.

  • restricted: Google-Domains werden nur in IP-Adressen mit eingeschränktem Zugriff aufgelöst.

Im folgenden Beispiel werden Google-Domains nur in IP-Adressen mit privatem Zugriff aufgelöst:

spec:
  googleAccess: private

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