DNS og tjenesteoppdaging
Forstå hvordan pods finner hverandre ved hjelp av Kubernetes' innebygde DNS, og hvordan tjenesteoppdaging fungerer under panseret.
DNS og tjenesteoppdaging er en gratis leksjon i Grunnleggende Kubernetes på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende Kubernetes, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende Kubernetes inneholder totalt 4 leksjoner.
Problemet med tjenesteoppdaging
Pod-er kommer og går, og IP-adressene deres endres hele tiden. Hardkoding av IP-adresser ville sluttet å fungere umiddelbart. Kubernetes løser dette med DNS-basert tjenesteoppdaging.
I stedet for en IP-adresse kommuniserer du med et stabilt navn.
DNS i klyngen
Alle klynger kjører en DNS-tjeneste (vanligvis CoreDNS). Den oppretter automatisk DNS-poster for Services og Pod-er, slik at navnene peker til riktig ClusterIP.
DNS-navn for Services
En Service får et DNS-navn som følger et forutsigbart mønster:
service-name.namespace.svc.cluster.local
Innenfor samme navnerom kan du bare bruke det korte navnet 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:8080Navnerom og navngivning
Navnerommet er en del av navnet. For å nå en Service i et annet navnerom tar du det med: service.namespace.
# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.localTeste DNS fra en Pod
Du kan starte en midlertidig Pod for å teste navneoppløsning.
kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-serviceSlik løser CoreDNS opp navn
Når en Pod spør etter et navn, går forespørselen til CoreDNS. Den slår opp den tilsvarende Servicen og returnerer ClusterIP-en. For headless Services returnerer den Pod-enes IP-adresser direkte.
Headless Services
En headless Service (clusterIP: None) hopper over den ene virtuelle IP-adressen. DNS returnerer i stedet IP-adressene til de enkelte Pod-ene, noe som er nødvendig for tilstandsfulle apper som adresserer Pod-er direkte.
apiVersion: v1
kind: Service
metadata:
name: db
spec:
clusterIP: None
selector:
app: db
ports:
- port: 5432DNS-poster for Pod-er
Med en headless Service kan hver Pod som støtter tjenesten også få sin egen DNS-post. Dette er nyttig for StatefulSets, der Pod-er har stabile identiteter som db-0 og db-1.
# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432Undersøke Pod-ens resolv.conf
Kubernetes legger inn DNS-konfigurasjon i hver Pod. Søketøyene gjør at korte navn blir løst riktig.
kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.localMiljøvariabler kontra DNS
Kubernetes legger også inn tilkoblingsinformasjon for Services som miljøvariabler, men bare for Services som eksisterte da Pod-en startet. DNS foretrekkes fordi det alltid gjenspeiler den gjeldende tilstanden.
Vanlige DNS-feller
- Glemme navnerommet ved kall på tvers av navnerom
- Forvente DNS for en Service uten samsvarende Pod-er (ingen endepunkter)
- Bufre utdaterte IP-adresser i appen i stedet for å slå opp navnet på nytt
Hurtigsjekk
Velg riktig format for DNS-navnet.
Oppsummering
Du har lært at Kubernetes bruker CoreDNS til å gi Services stabile DNS-navn som følger service.namespace.svc.cluster.local. Korte navn fungerer innenfor et navnerom, headless Services viser IP-adressene til de enkelte Pod-ene, og DNS gjenspeiler alltid den gjeldende tilstanden i klyngen.
Lær deg Grunnleggende Kubernetes med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «DNS og tjenesteoppdaging» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende Kubernetes, inkludert «DNS og tjenesteoppdaging», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende Kubernetes inneholder totalt 4 leksjoner.
Hva lærer jeg i «DNS og tjenesteoppdaging»?
Forstå hvordan pods finner hverandre ved hjelp av Kubernetes' innebygde DNS, og hvordan tjenesteoppdaging fungerer under panseret. Du øver på Grunnleggende Kubernetes med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende Kubernetes?
Ingen tidligere erfaring er nødvendig. Grunnleggende Kubernetes på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «DNS og tjenesteoppdaging»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende Kubernetes-leksjonen?
Ja. Alle Grunnleggende Kubernetes-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Gjøre apper tilgjengelige med Services
- Service-typer: ClusterIP, NodePort, LoadBalancer
- Ingress for ekstern tilgang
- DNS og tjenesteoppdaging