DevOps-bootcamp · leksjon

Forstå Deployments

Lær hvordan Deployments automatiserer administrasjonen av Pods og ReplicaSets for tilstandsløse applikasjoner.

Leksjon 1 av 411 trinn

Forstå Deployments er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 1 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.

Hva er Deployments?

Velkommen! I Kubernetes betyr administrasjon av applikasjoner at man administrerer Pods. Men det kan bli komplekst å administrere individuelle Pods eller til og med ReplicaSets direkte.

En Deployment er et objekt på høyere nivå som forenkler administrasjonen av tilstandsløse applikasjoner. Tenk på den som applikasjonens administrator.

  • Den definerer ønsket tilstand for applikasjonen.
  • Den sørger for at denne tilstanden opprettholdes, selv om Pods mislykkes.
  • Den automatiserer oppdateringer og tilbakerullinger.

Hvorfor bruke Deployments?

Deployments gir betydelige fordeler når applikasjoner skal kjøre pålitelig i Kubernetes:

  • Automatisert administrasjon: De håndterer oppretting, skalering og sletting av Pods.
  • Selvreparasjon: Hvis en Pod krasjer, erstatter Deployment-en den automatisk for å opprettholde ønsket antall replikaer.
  • Deklarative oppdateringer: De beskriver den ønskede nye tilstanden, og Deployment-en finner ut hvordan den skal oppnås (for eksempel ved å rulle ut nye versjoner).

De er den anbefalte måten å administrere tilstandsløse applikasjoner på.

Deployment-ens hovedrolle

I bunn og grunn administrerer en Deployment ReplicaSets. Oppgaven til et ReplicaSet er å sørge for at et angitt antall Pod-replikaer kjører til enhver tid.

En Deployment bruker altså ReplicaSets for å nå målet sitt: å sørge for at applikasjonen har riktig antall friske Pods som kjører i henhold til definisjonen.

Denne abstraksjonen gjør det mye enklere å definere og vedlikeholde applikasjonens livssyklus.

Strukturen til en Deployment-YAML

Som de fleste Kubernetes-objekter defineres Deployments ved hjelp av YAML. Her er de viktigste delene De vanligvis finner:

  • apiVersion og kind: Identifiserer objekttypen (Deployment).
  • metadata: Navn, etiketter og annet for selve Deployment-en.
  • spec: Kjerneinformasjonen, inkludert:
    • replicas: Ønsket antall Pods.
    • selector: Hvordan Deployment-en finner Pods den administrerer.
    • template: Oppskriften på Pods som skal opprettes.

Pod-malen

Feltet template i en Deployment sin spec er svært viktig. Det er i praksis en fullstendig Pod-definisjon.

Alle Pods som opprettes av denne Deployment-en, bruker denne malen. Det betyr at De definerer:

  • Container-imagene som skal brukes.
  • Porter som skal eksponeres.
  • Miljøvariabler.
  • Ressursforespørsler og -begrensninger.
  • Og mer!

Endringer i denne malen utløser oppdateringer av applikasjonen.

Opprette en enkel Deployment

La oss definere en Deployment for en enkel Nginx-webserver. Vi ønsker 3 replikaer.

Legg merke til at selector.matchLabels må samsvare med template.metadata.labels. Dette forteller Deployment-en hvilke Pods den eier.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Ta i bruk Deployment-en

For å opprette denne Deployment-en i Kubernetes-klyngen (for eksempel Minikube) bruker De kommandoen kubectl apply. Lagre YAML-en ovenfor som nginx-deployment.yaml.

kubectl oppretter Deployment-objektet. Deployment-kontrolleren oppdager deretter dette objektet og setter i gang, oppretter et ReplicaSet, som igjen oppretter de 3 Nginx-Pod-ene.

kubectl apply -f nginx-deployment.yaml

Undersøke Deployment-en

Når den er tatt i bruk, kan De kontrollere statusen til Deployment-en og Pods-ene den administrerer:

  • kubectl get deployments: Viser Deployment-en.
  • kubectl get replicasets: Viser ReplicaSet-et som Deployment-en opprettet.
  • kubectl get pods -l app=nginx: Viser Pods-ene som administreres av Deployment-en (via etikettvelgeren).
  • kubectl describe deployment my-nginx-deployment: Gir detaljert informasjon om Deployment-en, inkludert hendelser.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

Opprettholde ønsket tilstand

En av de mest kraftige funksjonene til Deployments er evnen til å opprettholde den ønskede tilstanden. Hvis De definerte replicas: 3, sørger Deployment-en for at 3 Pods alltid kjører.

Prøv å slette én av Nginx-Pod-ene manuelt (kubectl delete pod <pod-name>). De vil se at Deployment-en raskt oppretter en ny for å erstatte den! Dette er selvreparasjon i praksis.

Hurtigsjekk

Hvilken type applikasjon brukes en Deployment hovedsakelig til å administrere?

Oppsummering: Forstå Deployments

Godt jobbet! De har tatt sine første steg med Kubernetes Deployments.

  • Deployments er objekter på høyt nivå for administrasjon av tilstandsløse applikasjoner.
  • De automatiserer oppretting, skalering og selvreparasjon av Pods ved å administrere ReplicaSets.
  • De definerer en Deployment ved hjelp av et YAML-manifest, der De angir ønsket antall replicas og en template for Pods-ene.
  • kubectl apply oppretter Deployment-en, mens kubectl get/describe hjelper Dem med å overvåke den.

Deretter skal vi se nærmere på ReplicaSets og hvordan de garanterer ønsket antall Pods!

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 «Forstå Deployments» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Forstå Deployments», 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 «Forstå Deployments»?

Lær hvordan Deployments automatiserer administrasjonen av Pods og ReplicaSets for tilstandsløse applikasjoner. 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 1 av 4.

Hvor lang tid tar leksjonen «Forstå Deployments»?

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. Forstå Deployments
  2. Skalering av applikasjoner med ReplicaSets
  3. Løpende oppdateringer og tilbakerullinger
  4. Utrullingsstrategier: blue-green og canary
← Tilbake til DevOps-bootcamp