De basis van Kubernetes · Les

DNS en servicediscovery

Begrijp hoe Pods elkaar vinden via de ingebouwde DNS van Kubernetes en hoe servicediscovery onder de motorkap werkt.

Les 4 van 413 stappen

DNS en servicediscovery is een gratis De basis van Kubernetes-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject De basis van Kubernetes. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus De basis van Kubernetes bevat in totaal 4 lessen.

Het probleem van servicedetectie

Pods komen en gaan en hun IP-adressen veranderen voortdurend. IP-adressen vast instellen zou meteen problemen veroorzaken. Kubernetes lost dit op met DNS-gebaseerde servicedetectie.

In plaats van een IP-adres gebruik je een stabiele naam.

Cluster-DNS

Elk cluster voert een DNS-service uit (meestal CoreDNS). Deze maakt automatisch DNS-records voor Services en Pods, zodat namen naar het juiste ClusterIP-adres verwijzen.

DNS-namen van Services

Een Service krijgt een DNS-naam volgens een voorspelbaar patroon:

service-name.namespace.svc.cluster.local

In dezelfde namespace kun je gewoon de korte service-name gebruiken.

# 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 en naamgeving

De namespace maakt deel uit van de naam. Als je een Service in een andere namespace wilt bereiken, voeg je deze toe: service.namespace.

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

DNS testen vanuit een Pod

Je kunt een tijdelijke Pod starten om het opzoeken van namen te testen.

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

Hoe CoreDNS namen opzoekt

Wanneer een Pod een naam opvraagt, gaat het verzoek naar CoreDNS. Deze zoekt de bijbehorende Service op en retourneert het ClusterIP-adres. Voor headless Services retourneert deze rechtstreeks de IP-adressen van de Pods.

Headless Services

Een headless Service (clusterIP: None) gebruikt geen enkel virtueel IP-adres. DNS retourneert in plaats daarvan de afzonderlijke IP-adressen van de Pods. Dat is essentieel voor stateful applicaties die Pods rechtstreeks adresseren.

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

DNS-records van Pods

Met een headless Service kan elke achterliggende Pod ook een eigen DNS-record krijgen. Dat is handig voor StatefulSets, waarbij Pods stabiele identiteiten hebben zoals db-0 en db-1.

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

Pod-resolv.conf controleren

Kubernetes injecteert DNS-configuratie in elke Pod. Dankzij de zoekdomeinen worden korte namen correct opgezocht.

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

Omgevingsvariabelen versus DNS

Kubernetes injecteert ook verbindingsgegevens van Services als omgevingsvariabelen, maar alleen voor Services die bestonden toen de Pod werd gestart. DNS heeft de voorkeur omdat het altijd de actuele status weergeeft.

Veelvoorkomende DNS-problemen

  • De namespace vergeten bij aanroepen tussen namespaces
  • DNS verwachten voor een Service zonder overeenkomende Pods (geen endpoints)
  • Verouderde IP-adressen in de applicatie cachen in plaats van de naam opnieuw op te zoeken

Korte controle

Kies de juiste indeling voor een DNS-naam.

Samenvatting

Je hebt geleerd dat Kubernetes CoreDNS gebruikt om Services stabiele DNS-namen te geven volgens service.namespace.svc.cluster.local. Korte namen werken binnen een namespace, headless Services geven de afzonderlijke IP-adressen van Pods door en DNS geeft altijd de actuele status van het cluster weer.

Gratis beginnen

Leer De basis van Kubernetes met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “DNS en servicediscovery” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad De basis van Kubernetes, waaronder “DNS en servicediscovery”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus De basis van Kubernetes bevat in totaal 4 lessen.

Wat leer ik in “DNS en servicediscovery”?

Begrijp hoe Pods elkaar vinden via de ingebouwde DNS van Kubernetes en hoe servicediscovery onder de motorkap werkt. Je oefent met De basis van Kubernetes door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met De basis van Kubernetes te beginnen?

Ervaring vooraf is niet nodig. De basis van Kubernetes op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “DNS en servicediscovery”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over De basis van Kubernetes?

Ja. Elke les over De basis van Kubernetes bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Apps toegankelijk maken met Services
  2. Service-typen: ClusterIP, NodePort, LoadBalancer
  3. Ingress voor externe toegang
  4. DNS en servicediscovery
← Terug naar De basis van Kubernetes