Persistent Volumes og Claims
Forstå, hvordan De leverer permanent lagerplads til Pods ved hjælp af Persistent Volumes og Persistent Volume Claims.
Persistent Volumes og Claims er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Pods og flygtige data
Pods bliver oprettet og fjernet, men dit programs data skal ofte bevares. Tænk for eksempel på en database eller filer, som brugere har uploadet.
- Når en Pod genstarter eller planlægges på ny, går alle data, der er gemt direkte i containerens filsystem, tabt.
- Denne flygtige egenskab er fin til tilstandsløse programmer, men kritiske data kræver en holdbar løsning.
- Kubernetes stiller et effektivt system til rådighed til håndtering af vedvarende lager, som overlever Pods' livscyklusser.
PersistentVolume: Lagerplads i klyngen
En PersistentVolume (PV) er et stykke lagerplads i din Kubernetes-klynge.
- Det er en klyngespecifik ressource, hvilket betyder, at den ikke tilhører et bestemt navnerum.
- PVs klargøres af en administrator eller dynamisk af en StorageClass.
- De skjuler detaljerne om den underliggende lagringsteknologi (f.eks. Google Persistent Disk, AWS EBS eller en NFS-share).
Definition af en PersistentVolume
PVs defineres med oplysninger som kapacitet, adgangstilstande og lagertype. Denne YAML beskriver en PV, der bruger en hostPath (til lokal test) med 5 gigabyte lagerplads.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-local-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"
Bemærk: hostPath er typisk beregnet til udvikling på én node og anbefales ikke til produktion.
PersistentVolumeClaim: Pod'ens anmodning
En PersistentVolumeClaim (PVC) er en anmodning om lagerplads fra en bruger eller et program i et bestemt navnerum.
- Pods bruger ikke PVs direkte; de anmoder om lagerplads gennem en PVC.
- PVCs er begrænset til et navnerum, så de hører til i et bestemt projekts eller teams område.
- De angiver den ønskede størrelse, adgangstilstande og eventuelt en StorageClass.
PV og PVC: Matchningen
Kubernetes matcher automatisk en PVC med en tilgængelig PV gennem en proces, der kaldes binding.
- Når en PVC oprettes, søger Kubernetes efter en PV, der opfylder PVC'ens krav (størrelse, adgangstilstande og StorageClass).
- Når en egnet PV er fundet, bliver de "bundet" sammen i et én-til-én-forhold.
- Denne binding sikrer, at PVC'en får den specifikke lagerplads, den bad om.
Adgangstilstande for PVs/PVCs
Adgangstilstande definerer, hvordan lagerpladsen kan monteres og bruges af Pods. Disse tilstande anmodes der om via PVCs og understøttes af PVs:
- ReadWriteOnce (RWO): Diskenheden kan monteres med læse- og skriverettigheder af én enkelt node.
- ReadOnlyMany (ROX): Diskenheden kan monteres skrivebeskyttet af mange noder.
- ReadWriteMany (RWX): Diskenheden kan monteres med læse- og skriverettigheder af mange noder.
Tilgængeligheden af disse tilstande afhænger af den specifikke lagerudbyder.
Storage Classes til automatisering
Storage Classes giver administratorer en måde at beskrive "klasser" af lagerplads på (f.eks. "fast-ssd" og "slow-hdd").
- I stedet for at oprette PVs manuelt kan en StorageClass klargøre en PV dynamisk, når en PVC anmoder om det.
- Det automatiserer oprettelsen af PVs ud fra foruddefinerede skabeloner.
- Det adskiller klargøringen af lagerpladsen fra brugen af den, så det bliver nemmere for brugerne.
Eksempel på oprettelse af en PVC
Lad os oprette en PVC, der anmoder om 1 gigabyte lagerplads med adgangen ReadWriteOnce. Denne PVC leder efter en eksisterende PV eller udløser dynamisk klargø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
Gem dette som pvc.yaml, og anvend det med kubectl apply -f pvc.yaml.
Brug af en PVC i en Pod
Når en PVC er bundet, kan en Pod bruge den ved at henvise til PVC'ens navn i sin diskenhedskonfiguration. Pod'en behøver ikke at kende den underliggende PV, kun 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 skriver en fil til den monterede vedvarende diskenhed.
Overvågning af PVs og PVCs
Du kan overvåge status for dine ressourcer til vedvarende lagerplads ved hjælp af kubectl:
- Sådan ser du alle PVs:
kubectl get pv - Sådan ser du alle PVCs i dit navnerum:
kubectl get pvc - Sådan henter du detaljerede oplysninger, herunder status og hændelser:
kubectl describe pv <pv-name>kubectl describe pvc <pvc-name>
Sørg for, at dine PVs har status Bound, og at PVCs er Bound til den korrekte PV.
Forstå PV sammenlignet med PVC
En bruger vil udrulle en database, der kræver 50 GB vedvarende lagerplads. Hvilken Kubernetes-ressource repræsenterer direkte anmodningen om denne lagerplads fra brugerens program?
Opsummering af vedvarende lagerplads
Vi har gennemgået, hvordan Kubernetes håndterer holdbar lagerplads til dine programmer:
- PersistentVolumes (PVs) er klyngeressourcer, der repræsenterer den faktiske lagerplads.
- PersistentVolumeClaims (PVCs) er brugeranmodninger om lagerplads.
- Kubernetes binder PVCs til egnede PVs baseret på kravene.
- Adgangstilstande definerer, hvordan lagerplads kan bruges (RWO, ROX og RWX).
- Storage Classes muliggør dynamisk klargøring af PVs og automatiserer opsætningen.
Dette system sikrer, at dine programdata bevares, selvom Pods kommer og går, og giver pålidelighed til tilstandsfulde programmer.
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Persistent Volumes og Claims” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Persistent Volumes og Claims”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Persistent Volumes og Claims”?
Forstå, hvordan De leverer permanent lagerplads til Pods ved hjælp af Persistent Volumes og Persistent Volume Claims. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Persistent Volumes og Claims”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- ConfigMaps til konfiguration
- Secrets til følsomme data
- Persistent Volumes og Claims
- StorageClasses og dynamisk provisioning