DevOps-bootcamp · leksjon

Persistent Volumes og Claims

Forstå hvordan du tilbyr varig lagring til Pods ved hjelp av Persistent Volumes og Persistent Volume Claims.

Leksjon 3 av 412 trinn

Persistent Volumes og Claims er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 3 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.

Pods og flyktige data

Pods opprettes og avsluttes, men dataene i applikasjonen Deres må ofte bevares. Tenk på en database eller filer som brukere har lastet opp.

  • Når en Pod startes på nytt eller planlegges på nytt, går alle data som er lagret direkte i containerens filsystem, tapt.
  • Denne flyktige egenskapen fungerer fint for tilstandsløse applikasjoner, men kritiske data trenger en varig løsning.
  • Kubernetes tilbyr et kraftig system for å administrere persistent lagring som overlever Pods' livssykluser.

PersistentVolume: lagring for klyngen

Et PersistentVolume (PV) er et lagringsområde i Kubernetes-klyngen.

  • Det er en ressurs med klyngeomfang, noe som betyr at den ikke tilhører et bestemt namespace.
  • PVs klargjøres av en administrator eller dynamisk av en StorageClass.
  • De abstraherer bort detaljene i den underliggende lagringsteknologien (f.eks. Google Persistent Disk, AWS EBS eller en NFS-share).

Definere et PersistentVolume

PVs defineres med detaljer som kapasitet, tilgangsmoduser og lagringstype. Denne YAML-filen beskriver et PV som bruker hostPath (for lokal testing) med 5 gigabyte lagring.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-local-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/mnt/data"

Merk: hostPath brukes vanligvis til utvikling på én node og anbefales ikke i produksjon.

PersistentVolumeClaim: Pod-ens forespørsel

En PersistentVolumeClaim (PVC) er en forespørsel om lagring fra en bruker eller applikasjon i et bestemt namespace.

  • Pods bruker ikke PVs direkte; de ber om lagring gjennom en PVC.
  • PVCs har namespace-omfang, så de ligger i et bestemt prosjekt eller område for et team.
  • De angir ønsket størrelse, tilgangsmoduser og eventuelt en StorageClass.

PV og PVC: matchmakerne

Kubernetes kobler automatisk en PVC til et tilgjengelig PV gjennom en prosess som kalles binding.

  • Når en PVC opprettes, søker Kubernetes etter et PV som oppfyller PVC-ens krav (størrelse, tilgangsmoduser og StorageClass).
  • Når et egnet PV er funnet, blir de «bundet» sammen i et én-til-én-forhold.
  • Denne koblingen sikrer at PVC-en får den bestemte lagringen den ba om.

Tilgangsmoduser for PVs/PVCs

Tilgangsmoduser definerer hvordan lagringen kan monteres og brukes av Pods. Disse modusene etterspørres av PVCs og støttes av PVs:

  • ReadWriteOnce (RWO): Volumet kan monteres med lese- og skrivetilgang av én enkelt node.
  • ReadOnlyMany (ROX): Volumet kan monteres skrivebeskyttet av flere noder.
  • ReadWriteMany (RWX): Volumet kan monteres med lese- og skrivetilgang av flere noder.

Hvilke moduser som er tilgjengelige, avhenger av den bestemte lagringsleverandøren.

StorageClasses for automatisering

StorageClasses gir administratorer en måte å beskrive «klasser» av lagring på (f.eks. «fast-ssd» og «slow-hdd»).

  • I stedet for å opprette PVs manuelt kan en StorageClass klargjøre et PV dynamisk når en PVC ber om det.
  • Dette automatiserer opprettelsen av PVs basert på forhåndsdefinerte maler.
  • Det skiller klargjøringen av lagring fra bruken av den, noe som gjør det enklere for brukerne.

Eksempel på opprettelse av en PVC

La oss opprette en PVC som ber om 1 gigabyte lagring med ReadWriteOnce-tilgang. Denne PVC-en søker etter et eksisterende PV eller utløser dynamisk klargjøring via en StorageClass.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-app-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard # Optional: if you have a 'standard' StorageClass

Lagre dette som pvc.yaml, og bruk kubectl apply -f pvc.yaml for å ta det i bruk.

Bruke en PVC i en Pod

Når en PVC er bundet, kan en Pod bruke den ved å referere til PVC-ens navn i volumkonfigurasjonen. Pod-en trenger ikke å kjenne til det underliggende PV-et, bare PVC-en.

apiVersion: v1
kind: Pod
metadata:
  name: my-data-pod
spec:
  containers:
    - name: data-container
      image: busybox
      command: ["/bin/sh", "-c", "echo 'Hello from CoddyKit!' > /mnt/data/hello.txt && sleep 3600"]
      volumeMounts:
        - name: persistent-storage
          mountPath: /mnt/data
  volumes:
    - name: persistent-storage
      persistentVolumeClaim:
        claimName: my-app-pvc

Denne Pod-en skriver en fil til det monterte persistente volumet.

Overvåke PVs og PVCs

De kan overvåke ressursene for persistent lagring ved hjelp av kubectl:

  • Se alle PVs: kubectl get pv
  • Se alle PVCs i namespace-et Deres: kubectl get pvc
  • Hent detaljert informasjon, inkludert status og hendelser:
    • kubectl describe pv <pv-name>
    • kubectl describe pvc <pvc-name>

Kontroller at PVs har status Bound, og at PVCs er Bound til riktig PV.

Forstå PV kontra PVC

En bruker vil rulle ut en database som trenger 50 GB persistent lagring. Hvilken Kubernetes-ressurs representerer direkte forespørselen om denne lagringen fra brukerens applikasjon?

Sammendrag av persistent lagring

Vi har gått gjennom hvordan Kubernetes administrerer varig lagring for applikasjonene Deres:

  • PersistentVolumes (PVs) er klyngeressurser som representerer faktisk lagring.
  • PersistentVolumeClaims (PVCs) er brukernes forespørsler om lagring.
  • Kubernetes binder PVCs til egnede PVs basert på kravene.
  • Tilgangsmoduser definerer hvordan lagring kan brukes (RWO, ROX og RWX).
  • StorageClasses muliggjør dynamisk klargjøring av PVs og automatiserer oppsettet.

Dette systemet sikrer at applikasjonsdataene bevares selv om Pods kommer og går, og gir pålitelighet for tilstandsfulle applikasjoner.

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 «Persistent Volumes og Claims» gratis?

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

Forstå hvordan du tilbyr varig lagring til Pods ved hjelp av Persistent Volumes og Persistent Volume Claims. 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 3 av 4.

Hvor lang tid tar leksjonen «Persistent Volumes og Claims»?

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. ConfigMaps for konfigurasjon
  2. Secrets for sensitive data
  3. Persistent Volumes og Claims
  4. StorageClasses og dynamisk klargjøring
← Tilbake til DevOps-bootcamp