Service Discovery und DNS


Auf dieser Seite wird beschrieben, wie in Google Kubernetes Engine (GKE) Service Discovery und Cluster-DNS umgesetzt werden.

Diensterkennung

In Kubernetes wird Service Discovery mit automatisch generierten Dienstnamen umgesetzt, die der IP-Adresse des Dienstes zugeordnet sind. Dienstnamen folgen einer Standardspezifikation: my-svc.my-namespace.svc.cluster-domain.example. Pods können auf externe Dienste auch über deren Namen zugreifen, z. B. example.com. Weitere Informationen zur Funktionsweise von DNS in Kubernetes finden Sie unter DNS für Dienste und Pods.

Cluster-DNS in GKE

Neue Autopilot-Cluster verwenden Cloud DNS und Sie können den DNS-Anbieter nicht ändern.

Für Standard bietet GKE die folgenden Cluster-DNS-Optionen, um Dienstnamen und externe Namen aufzulösen:

  • kube-dns: Ein Cluster-Add-on, das standardmäßig in allen GKE-Clustern bereitgestellt wird.
  • Cloud DNS: Eine in der Cloud verwaltete Cluster-DNS-Infrastruktur, die Cloud DNS nutzt und keine Verwaltung von clusterinternen DNS-Servern wie kube-dns erfordert.

Sie können Ihre Dienste auch bei Service Directory für GKE registrieren.

GKE bietet auch NodeLocal DNSCache als optionales Add-on, das mit kube-dns oder Cloud DNS verwendet werden kann.

kube-dns

kube-dns ist der Standard-DNS-Anbieter für Standardcluster und der einzige DNS-Anbieter für Autopilot-Cluster, auf denen Versionen vor 1.25.9-gke.400 und 1.26.4-gke.500 ausgeführt werden.

Kube-dns wird als Deployment ausgeführt, das kube-dns-Pods auf Knoten im Cluster plant.

Weitere Informationen zu kube-dns finden Sie unter kube-dns verwenden.

Cloud DNS

Cloud DNS ist der einzige DNS-Anbieter für Autopilot-Cluster mit Version 1.25.9-gke.400 und höher und Version 1.26.4-gke.500 und höher.

Cloud DNS bietet Pod- und Dienst-DNS-Auflösung ohne einen vom Cluster gehosteten DNS-Anbieter wie kube-dns. Der Cloud DNS-Controller stellt automatisch DNS-Einträge für Pods und Dienste in Cloud DNS für ClusterIP, monitorlose und externe Namensdienste bereit.

Informationen zum Konfigurieren von Cloud DNS finden Sie unter Cloud DNS für GKE verwenden.

NodeLocal DNSCache

NodeLocal DNSCache wird als DaemonSet ausgeführt, das auf jedem Clusterknoten einen DNS-Cache-Pod plant. Dieser DNS-Cache verbessert die DNS-Lookup-Latenz, sorgt für einheitlichere DNS-Lookup-Zeiten und kann die Anzahl der DNS-Abfragen an kube-dns oder Cloud DNS reduzieren.

Informationen zum Konfigurieren von NodeLocal DNSCache finden Sie unter NodeLocal DNSCache einrichten.

Service Discovery außerhalb eines einzelnen Clusters

Mit einer der folgenden Methoden können Sie Service Discovery über den Umfang eines einzelnen Clusters hinaus konfigurieren.

Cloud DNS-VPC-Bereich

Ein Cluster, der Cloud DNS für Cluster-DNS verwendet, muss in einem von zwei verfügbaren Modi arbeiten: GKE-Clusterbereich oder VPC-Bereich (Virtual Private Cloud).

Wenn Sie einen Cluster im Clusterbereich konfigurieren, können DNS-Einträge nur innerhalb des Clusters mithilfe des Schemas <svc>.<ns>.svc.cluster.local aufgelöst werden. Dies entspricht dem Verhalten von kube-dns.

Wenn Sie einen Cluster im VPC-Bereich konfigurieren, können DNS-Einträge für Clusterdienste innerhalb der gesamten VPC aufgelöst werden. Das bedeutet, dass Clients in derselben VPC, die über Cloud VPN oder Cloud Interconnect mit der VPC verbunden sind, die DNS-Einträge für Dienste direkt im GKE-Cluster auflösen können. Sie können auch eindeutige Cluster-DNS-Namen konfigurieren, damit Nicht-GKE-Clients DNS-Einträge auflösen können. Ein Nicht-GKE-Client könnte beispielsweise gke-svc.ns.svc.cluster1 aus gke-svc.ns.svc.cluster2 auflösen.

Weitere Informationen zum VPC-Bereichs-DNS finden Sie unter Cloud DNS für GKE verwenden.

Multi-Cluster-Dienste

Multi-Cluster-Dienste bieten Multi-Cluster-Service-Discovery und Load-Balancing für GKE, die das vorhandene Dienstobjekt nutzen. Multi-Cluster-Dienste sind über alle GKE-Cluster mit einer einzigen virtuellen IP-Adresse auffindbar und zugänglich. Dieses Verhalten ist mit einem ClusterIP-Dienst identisch, auf den in einem einzigen Cluster zugegriffen werden kann.

Multi-Cluster-Dienste aggregieren Dienste über Cluster und machen sie als einzelnen Multi-Cluster-DNS-Eintrag mit dem Schema <svc>.<ns>.svc.clusterset.local adressierbar. Dadurch sind eindeutige Namen für bestimmte Dienste möglich, die von jedem GKE-Cluster mit Multi-Cluster-Diensten konsistent und adressierbar sind.

Weitere Informationen zu Multi-Cluster-Diensten finden Sie unter Multi-Cluster-Dienste.

Service Directory für GKE

Service Directory für GKE bietet eine einheitliche Ansicht der Dienste für alle Ihre Kubernetes-Deployments. Service Directory kann sowohl GKE-Dienste als auch Nicht-GKE-Dienste in einer einzigen Registry registrieren. Service Directory ist besonders in folgenden Fällen nützlich:

  • Sie benötigen eine einzige Registry für Kubernetes- und Nicht-Kubernetes-Anwendungen zur gegenseitigen Discovery.
  • Sie benötigen ein verwaltetes Service Discovery-Tool.
  • Zum Speichern von Metadaten zu Ihrem Dienst, auf die andere Clients zugreifen können.
  • Zum Festlegen der Zugriffsberechtigungen auf Dienstebene.

Service Directory-Dienste können über DNS, HTTP und gRPC aufgelöst werden. Service Directory ist in Cloud DNS eingebunden und kann Cloud DNS-Einträge ergänzen, die Diensten in Service Directory entsprechen.

Weitere Informationen finden Sie unter Service Directory für GKE konfigurieren.

/etc/resolv.conf

Bei Pods mit einer ClusterFirst-DNS-Richtlinie hängt der Wert von /etc/resolv.conf davon ab, welche Features im Cluster aktiviert sind:

Cloud DNS für GKE NodeLocal DNSCache /etc/resolv.conf Wert
Aktiviert Aktiviert 169.254.20.10
Aktiviert Deaktiviert 169.254.169.254
Deaktiviert Aktiviert IP-Adresse des Dienstes „kube-dns“
Deaktiviert Deaktiviert IP-Adresse des Dienstes „kube-dns“

Nächste Schritte