DNS och tjänsteidentifiering
Förstå hur Pods hittar varandra med Kubernetes inbyggda DNS och hur tjänsteidentifiering fungerar under huven.
DNS och tjänsteidentifiering är en gratis lektion i Grunderna i Kubernetes på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Kubernetes, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Kubernetes innehåller totalt 4 lektioner.
Problemet med tjänsteupptäckt
Poddar kommer och går, och deras IP-adresser ändras hela tiden. Hårdkodade IP-adresser skulle sluta fungera direkt. Kubernetes löser detta med DNS-baserad tjänsteupptäckt.
I stället för en IP-adress ansluter du till ett stabilt namn.
Kluster-DNS
Varje kluster kör en DNS-tjänst (vanligtvis CoreDNS). Den skapar automatiskt DNS-poster för Services och Poddar, så att namn översätts till rätt ClusterIP.
DNS-namn för Services
En Service får ett DNS-namn enligt ett förutsägbart mönster:
service-name.namespace.svc.cluster.local
I samma namnrymd kan du använda det korta namnet service-name.
# 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:8080Namnrymder och namngivning
Namnrymden är en del av namnet. Om du vill nå en Service i en annan namnrymd inkluderar du den: service.namespace.
# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.localTesta DNS från en Pod
Du kan starta en tillfällig Pod för att testa namnöversättningen.
kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-serviceSå översätter CoreDNS namn
När en Pod frågar efter ett namn går begäran till CoreDNS. Det letar upp motsvarande Service och returnerar dess ClusterIP. För headless Services returneras Poddarnas IP-adresser direkt.
Headless Services
En headless Service (clusterIP: None) använder inte en enda virtuell IP-adress. DNS returnerar i stället de enskilda Poddarnas IP-adresser, vilket är viktigt för tillståndsbaserade program som adresserar Poddar direkt.
apiVersion: v1
kind: Service
metadata:
name: db
spec:
clusterIP: None
selector:
app: db
ports:
- port: 5432DNS-poster för Poddar
Med en headless Service kan varje bakomliggande Pod också få en egen DNS-post. Det är användbart för StatefulSets där Poddar har stabila identiteter som db-0 och db-1.
# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432Granska Poddens resolv.conf
Kubernetes injicerar DNS-konfiguration i varje Pod. Sökdomänerna gör att korta namn kan översättas korrekt.
kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.localMiljövariabler jämfört med DNS
Kubernetes injicerar också anslutningsinformation för Services som miljövariabler, men bara för Services som fanns när Podden startade. DNS föredras eftersom det alltid återspeglar det aktuella tillståndet.
Vanliga DNS-problem
- Glömma namnrymden vid anrop mellan namnrymder
- Förvänta sig DNS för en Service utan matchande Poddar (inga endpoints)
- Cacha gamla IP-adresser i programmet i stället för att slå upp namnet igen
Snabbtest
Välj rätt format för DNS-namnet.
Sammanfattning
Du har lärt dig att Kubernetes använder CoreDNS för att ge Services stabila DNS-namn enligt service.namespace.svc.cluster.local. Korta namn fungerar inom en namnrymd, headless Services visar enskilda Poddars IP-adresser och DNS återspeglar alltid klustrets aktuella tillstånd.
Lär dig Grunderna i Kubernetes med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”DNS och tjänsteidentifiering” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Kubernetes, inklusive ”DNS och tjänsteidentifiering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Kubernetes innehåller totalt 4 lektioner.
Vad lär jag mig i ”DNS och tjänsteidentifiering”?
Förstå hur Pods hittar varandra med Kubernetes inbyggda DNS och hur tjänsteidentifiering fungerar under huven. Ni övar på Grunderna i Kubernetes med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Kubernetes?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Kubernetes på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”DNS och tjänsteidentifiering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Kubernetes-lektionen?
Ja. Varje Grunderna i Kubernetes-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Exponera appar med Services
- Service-typer: ClusterIP, NodePort, LoadBalancer
- Ingress för extern åtkomst
- DNS och tjänsteidentifiering