DNS für einen Cluster konfigurieren

In diesem Dokument wird gezeigt, wie Sie das DNS für einen Administrator- oder Nutzercluster konfigurieren.

Die DNS-Konfiguration für einen Cluster wird in einer benutzerdefinierten ClusterDNS-Ressource mit dem Namen default gespeichert. Dies ist eine clusterweite Ressource; sie hat also keinen Namespace.

ClusterDNS-Ressource ansehen

So rufen Sie die ClusterDNS-Ressource auf:

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

Ersetzen Sie CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei des Clusters.

Die DNS-Konfiguration befindet sich im Abschnitt spec. Wenn der Abschnitt spec leer ist oder fehlt, verwendet der Cluster eine Kubernetes CoreDNS-Standardkonfiguration.

DNS-Konfiguration ändern

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
    nameservers:
    - 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 CLUSTER_KUBECONFIG apply -f my-dns.yaml

ClusterDNS-Spezifikation

spec.upstreamNameservers

Ein Array von Objekten mit jeweils einer Server-IP-Adresse und optional einem Serverport. Der Standardwert für den Serverport ist 53.

Die standardmäßigen vorgelagerten Nameserver. Anfragen für Nicht-Cluster-Domains werden standardmäßig an diese Gruppe von Servern weitergeleitet. Beispiel:

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. Dadurch wird die Konfiguration in upstreamNameservers überschrieben.

Sie können in diesem Abschnitt verschiedene vorgelagerte Nameserver für bestimmte Domains getrennt von den standardmäßigen vorgelagerten Nameservern konfigurieren.

Sie können auch das Abfrage-Logging für eine Domain aktivieren. Sie können dies für jede angegebene Domain oder die Clusterdomain „cluster.local“ tun.

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

String. Wenn Google-Domains zu IP-Adressen mit privatem Zugriff aufgelöst werden sollen, legen Sie für dieses Feld "private" fest. Wenn Google Domains zu IP-Adressen mit eingeschränktem Zugriff aufgelöst werden sollen, legen Sie für dieses Feld restricted fest. Wenn Sie keine besondere Behandlung für Google-Domains wünschen, legen Sie default fest oder entfernen Sie dieses Feld. Weitere Informationen finden Sie unter Privaten Google-Zugriff für lokale Hosts konfigurieren.

Beispiel:

spec:
  googleAccess: private

spec.orderPolicy

String. Wenn Sie die Sortierrichtlinie angeben möchten, nach der Upstream-Server ausgewählt werden. Standardwert ist "random". Unterstützte Typen sind "random", "round_robin" und "sequential". Diese Sortierrichtlinie gilt auch für definierte Domains. Weitere Informationen zu policy und den einzelnen Konfigurationen finden Sie in der coredns.

Beispiel:

spec:
  orderPolicy: sequential