DevOps-bootcamp · leksjon

Service-typer: ClusterIP, NodePort, LoadBalancer

Lær om de ulike måtene å gjøre tjenester tilgjengelige på innenfor og utenfor Kubernetes-klyngen.

Leksjon 2 av 412 trinn

Service-typer: ClusterIP, NodePort, LoadBalancer er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 2 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 DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Behov for eksponering av tjenester

I Kubernetes er Pods midlertidige og har dynamiske IP-adresser. Services gir applikasjonene dine stabil nettverkstilgang. Men hvordan eksponerer du dem?

Avhengig av om applikasjonen skal være tilgjengelig fra innsiden eller utsiden av klyngen, og på hvilken måte, tilbyr Kubernetes ulike Service-typer. La oss se nærmere på de tre viktigste!

ClusterIP: Intern tilgang

ClusterIP er standardtypen for Service. Den gir Servicen en stabil intern IP-adresse som bare er tilgjengelig fra Kubernetes-klyngen.

  • Pods kan nå andre Pods ved hjelp av disse ClusterIP-adressene og navnet på Servicen.
  • Den egner seg perfekt for backend-tjenester som ikke trenger direkte eksponering mot omverdenen.
  • Tenk på den som en intern lastbalanserer for Pods.

YAML for ClusterIP Service

Slik definerer du en Service av typen ClusterIP. Legg merke til feltet type: ClusterIP, selv om det er valgfritt siden dette er standardtypen.

apiVersion: v1
kind: Service
metadata:
  name: my-internal-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

Tilgang til ClusterIP-tjenester

Når Servicen er distribuert, tildeler Kubernetes den automatisk en unik intern IP-adresse (ClusterIP). Andre Pods kan deretter bruke navnet på Servicen (for eksempel my-internal-service) eller IP-adressen for å koble til.

Kubernetes' DNS-tjeneste oversetter navnet på Servicen til dens ClusterIP, noe som gjør intern kommunikasjon enkel og pålitelig.

NodePort: Ekstern tilgang

Hva om du trenger tilgang til applikasjonen fra utsiden av klyngen? Det er her NodePort kommer inn.

En NodePort-Service eksponerer applikasjonen på en statisk port på IP-adressen til hver node i klyngen. All trafikk som sendes til NodeIP:NodePort, rutes til Servicen.

  • Nyttig for utvikling og mindre distribusjoner.
  • NodePort ligger vanligvis i området 30000–32767.

YAML for NodePort Service

For å opprette en NodePort-Service angir du eksplisitt type: NodePort. Hvis du ikke angir en port, velger Kubernetes automatisk en tilgjengelig port i NodePort-området.

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080 # Optional: K8s picks if omitted
  type: NodePort

Koble til via NodePort

Etter at du har distribuert en NodePort-Service, kan du få tilgang til applikasjonen fra utsiden av klyngen ved å bruke <AnyNodeIP>:<NodePort>.

Hvis IP-adressen til en node for eksempel er 192.168.1.100 og den tildelte NodePort-porten er 30080, kan du nå appen på http://192.168.1.100:30080.

LoadBalancer: Integrasjon med skyen

For produksjonsmiljøer hos skyleverandører (AWS, GCP, Azure) foretrekkes ofte Service-typen LoadBalancer. Den oppretter automatisk en ekstern lastbalanserer i skyen.

Denne lastbalansereren får en offentlig IP-adresse og fordeler ekstern trafikk til Pod-ene til Servicen. Den håndterer all den komplekse rutingen for deg.

YAML for LoadBalancer Service

Det er enkelt å definere en LoadBalancer-Service. Skyleverandøren din gjør det meste av arbeidet med å opprette den eksterne lastbalansereren.

apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

Ekstern tilgang med LoadBalancer

Når Servicen er distribuert, oppretter skyleverandøren din en dedikert lastbalanserer og tildeler den en ekstern IP-adresse eller et vertsnavn. Deretter kan du bruke dette offentlige endepunktet for å få tilgang til applikasjonen.

Dette gir en robust, skalerbar løsning med høy tilgjengelighet for å eksponere tjenestene dine mot internett.

Kort kontroll: Service-typer

Hvilke Kubernetes Service-typer tillater direkte ekstern tilgang til applikasjonen fra utsiden av klyngen?

Oppsummering: Velg riktig Service

Du har lært om de tre viktigste Kubernetes Service-typene:

  • ClusterIP: For tilgang som bare skal være intern i klyngen.
  • NodePort: Eksponerer tjenester på en statisk port på hver nodes IP-adresse, slik at de kan nås eksternt.
  • LoadBalancer: Integreres med skyleverandører for å opprette en ekstern lastbalanserer med en offentlig IP-adresse.

Velg riktig type basert på hvor tilgjengelig applikasjonen skal være, og hvilket distribusjonsmiljø du bruker!

Gratis å komme i gang

Lær deg DevOps-bootcamp 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
142
Leksjoner
568

Ofte stilte spørsmål

Er leksjonen «Service-typer: ClusterIP, NodePort, LoadBalancer» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Service-typer: ClusterIP, NodePort, LoadBalancer», 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 DevOps-bootcamp inneholder totalt 4 leksjoner.

Hva lærer jeg i «Service-typer: ClusterIP, NodePort, LoadBalancer»?

Lær om de ulike måtene å gjøre tjenester tilgjengelige på innenfor og utenfor Kubernetes-klyngen. Du øver på DevOps-bootcamp 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 DevOps-bootcamp?

Ingen tidligere erfaring er nødvendig. DevOps-bootcamp 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 2 av 4.

Hvor lang tid tar leksjonen «Service-typer: ClusterIP, NodePort, LoadBalancer»?

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 DevOps-bootcamp-leksjonen?

Ja. Alle DevOps-bootcamp-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 DevOps-bootcamp