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
- Cloud DNS für GKE verwenden
- Mit NodeLocal DNSCache eine skalierbare DNS-Auflösung für Cluster bereitstellen, die große Mengen an DNS-Abfragen benötigen