Grunnleggende Kubernetes · leksjon

DNS og tjenesteoppdaging

Forstå hvordan pods finner hverandre ved hjelp av Kubernetes' innebygde DNS, og hvordan tjenesteoppdaging fungerer under panseret.

Leksjon 4 av 413 trinn

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:8080

Navnerom 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.local

Teste 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-service

Slik 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: 5432

DNS-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:5432

Undersø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.local

Miljø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.

Gratis å komme i gang

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

  1. Gjøre apper tilgjengelige med Services
  2. Service-typer: ClusterIP, NodePort, LoadBalancer
  3. Ingress for ekstern tilgang
  4. DNS og tjenesteoppdaging
← Tilbake til Grunnleggende Kubernetes