Kubernetes Basics · Lektion

DNS und Service Discovery

Verstehen Sie, wie Pods einander über das integrierte Kubernetes-DNS finden und wie Service Discovery im Hintergrund funktioniert.

Lektion 4 von 413 Schritte

DNS und Service Discovery ist eine kostenlose Kubernetes Basics-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kubernetes Basics-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.

Das Problem der Serviceerkennung

Pods kommen und gehen, und ihre IP-Adressen ändern sich ständig. Fest codierte IP-Adressen würden sofort zu Fehlern führen. Kubernetes löst dieses Problem mit der DNS-basierten Serviceerkennung.

Statt einer IP-Adresse verwenden Sie einen stabilen Namen.

Cluster-DNS

Jeder Cluster betreibt einen DNS-Service (normalerweise CoreDNS). Er erstellt automatisch DNS-Einträge für Services und Pods, sodass Namen in die richtige ClusterIP aufgelöst werden.

DNS-Namen von Services

Ein Service erhält einen DNS-Namen nach einem vorhersehbaren Muster:

service-name.namespace.svc.cluster.local

Innerhalb desselben Namespace können Sie einfach den kurzen Namen service-name verwenden.

# from a Pod in the same namespace
curl http://payment-service:8080

# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080

Namespaces und Benennung

Der Namespace ist Bestandteil des Namens. Um einen Service in einem anderen Namespace zu erreichen, geben Sie ihn an: service.namespace.

# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.local

DNS aus einem Pod testen

Sie können einen kurzlebigen Pod starten, um die Namensauflösung zu testen.

kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-service

So löst CoreDNS Namen auf

Wenn ein Pod einen Namen abfragt, geht die Anfrage an CoreDNS. CoreDNS sucht den passenden Service und gibt dessen ClusterIP zurück. Bei headless Services werden stattdessen die IP-Adressen der Pods direkt zurückgegeben.

Headless Services

Ein headless Service (clusterIP: None) verwendet keine einzelne virtuelle IP-Adresse. DNS gibt stattdessen die einzelnen IP-Adressen der Pods zurück. Das ist für zustandsbehaftete Anwendungen unerlässlich, die Pods direkt adressieren.

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
  - port: 5432

DNS-Einträge von Pods

Bei einem headless Service kann jeder zugehörige Pod außerdem einen eigenen DNS-Eintrag erhalten. Das ist für StatefulSets nützlich, bei denen Pods stabile Identitäten wie db-0 und db-1 haben.

# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432

resolv.conf eines Pods überprüfen

Kubernetes fügt jedem Pod eine DNS-Konfiguration hinzu. Die Suchdomänen ermöglichen die korrekte Auflösung kurzer Namen.

kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.local

Umgebungsvariablen im Vergleich zu DNS

Kubernetes fügt Verbindungsinformationen von Services ebenfalls als Umgebungsvariablen ein, allerdings nur für Services, die beim Start des Pods bereits vorhanden waren. DNS wird bevorzugt, weil es immer den aktuellen Zustand widerspiegelt.

Häufige DNS-Fallen

  • Den Namespace bei Aufrufen über Namespace-Grenzen hinweg vergessen
  • DNS für einen Service ohne passende Pods erwarten (keine Endpunkte)
  • Veraltete IP-Adressen in der Anwendung zwischenspeichern, statt den Namen erneut aufzulösen

Kurzer Test

Wählen Sie das richtige Format für einen DNS-Namen aus.

Zusammenfassung

Sie haben gelernt, dass Kubernetes CoreDNS verwendet, um Services stabile DNS-Namen nach dem Muster service.namespace.svc.cluster.local zu geben. Kurze Namen funktionieren innerhalb eines Namespace, headless Services stellen die IP-Adressen einzelner Pods bereit, und DNS spiegelt immer den aktuellen Zustand des Clusters wider.

Kostenlos starten

Lerne Kubernetes Basics mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
12
Lektionen
48

Häufig gestellte Fragen

Ist die Lektion „DNS und Service Discovery“ kostenlos?

Ja — der vollständige Text von „DNS und Service Discovery“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kubernetes Basics-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „DNS und Service Discovery“?

Verstehen Sie, wie Pods einander über das integrierte Kubernetes-DNS finden und wie Service Discovery im Hintergrund funktioniert. Du übst Kubernetes Basics mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kubernetes Basics zu starten?

Keine Vorkenntnisse erforderlich. Kubernetes Basics auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „DNS und Service Discovery“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kubernetes Basics-Lektion Code schreiben und ausführen?

Ja. Jede Kubernetes Basics-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Apps mit Services zugänglich machen
  2. Service-Typen: ClusterIP, NodePort, LoadBalancer
  3. Ingress für externen Zugriff
  4. DNS und Service Discovery
← Zurück zu Kubernetes Basics