Persistenta volymer och volymanspråk
Förstå hur lagring provisioneras och används dynamiskt i Kubernetes med PV:er och PVC:er.
Persistenta volymer och volymanspråk är en gratis lektion i Docker och Kubernetes för utvecklare på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Docker och Kubernetes för utvecklare, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Docker och Kubernetes för utvecklare innehåller totalt 4 lektioner.
Tillfälliga Pods, beständiga data
I Kubernetes är Pods utformade för att vara tillfälliga och utbytbara. Om en Pod kraschar eller schemaläggs om går alla data som lagras direkt i den förlorade.
Denna tillfälliga egenskap passar bra för tillståndslösa applikationer, men hur är det med applikationer som behöver lagra data beständigt, till exempel databaser eller filservrar?
Introduktion till Persistent Volumes
En Persistent Volume (PV) är lagring i klustret som har tillhandahållits av en administratör eller dynamiskt av Kubernetes.
Det är en abstraktion av den underliggande lagringen (till exempel en molndisk, en NFS-resurs eller en lokal disk), vilket gör den tillgänglig för Pods utan att de behöver känna till lagringens detaljer.
PV-kapacitet och åtkomstlägen
Varje PV har specifika egenskaper:
- Kapacitet: Lagringens storlek, till exempel
10Gi. - Åtkomstlägen: Hur lagringen kan monteras av Pods.
- Återanvändningspolicy: Vad som händer med volymen när en Pod har slutat använda den.
Dessa egenskaper hjälper Kubernetes att matcha lagringsbegäranden med tillgängliga volymer.
Så får Pods åtkomst till lagring
PV:ers åtkomstlägen definierar hur volymen kan monteras:
ReadWriteOnce (RWO): Volymen kan monteras med läs- och skrivåtkomst av en enda nod.ReadOnlyMany (ROX): Volymen kan monteras skrivskyddat av flera noder.ReadWriteMany (RWX): Volymen kan monteras med läs- och skrivåtkomst av flera noder.
Alla lagringstyper stöder inte alla lägen. En lokal disk stöder till exempel vanligtvis endast RWO.
Hantera frisläppta PV:er
En PV:s återanvändningspolicy avgör vad som händer med den underliggande lagringen när PV:n frigörs från sitt anspråk:
Retain: Manuell återanvändning. Data finns kvar och administratören måste ta bort dem manuellt.Delete: Den underliggande lagringen tas automatiskt bort tillsammans med PV:n. Detta är vanligt för dynamiskt tillhandahållna volymer.Recycle: (Föråldrat) Rensar volymen och gör den tillgänglig igen.
Retain är användbart för kritiska data som behöver granskas manuellt innan de tas bort.
Begära beständig lagring
En Persistent Volume Claim (PVC) är en begäran om lagring från en användare eller applikation.
Tänk på det som en begäran om lagring av en viss typ och storlek. I stället för att interagera direkt med PV:er begär Pods lagring via PVC:er.
PVC:er tillhandahåller ett abstraktionslager som gör det möjligt för utvecklare att begära lagring utan att känna till detaljerna i den underliggande infrastrukturen.
Matcha lagringsbegäranden
När en PVC skapas försöker Kubernetes hitta en lämplig PV att binda den till. Denna process kallas binding.
Systemet letar efter PV:er som uppfyller PVC:ns krav:
- Kapacitet (storlek)
- Åtkomstlägen
- Storage Class (om en sådan har angetts)
När PV:n har bundits reserveras den exklusivt för den PVC:n.
Definiera en enkel PV
Så här kan ni definiera en enkel Persistent Volume av typen hostPath. Denna typ använder en katalog i nodens filsystem och är främst avsedd för testning på en enda nod.
Prova att köra detta exempel (kubectl apply -f pv.yaml):
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"Begära lagring med en PVC
Nu skapar vi en Persistent Volume Claim som begär 1Gi lagring med åtkomsten ReadWriteOnce. Den binds till vår my-pv om den är tillgänglig.
Prova att köra detta exempel (kubectl apply -f pvc.yaml):
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1GiKoppla en PVC till en Pod
Slutligen ska vi se hur en Pod kan använda lagringen som tillhandahålls av vår PVC. Vi refererar till PVC:n i Pod:ens avsnitt volumes och monterar den sedan i en container.
Prova att köra detta exempel (kubectl apply -f pod.yaml):
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Hello from CoddyKit!' > /data/message.txt && sleep 3600"]
volumeMounts:
- mountPath: "/data"
name: my-storagePV:ers och PVC:ers roller
Det är viktigt att förstå de olika rollerna för Persistent Volumes (PV:er) och Persistent Volume Claims (PVC:er) när ni hanterar lagring i Kubernetes.
Vilket påstående beskriver korrekt den primära rollen för en Persistent Volume (PV)?
Sammanfattning: beständig lagring
Bra jobbat! Ni har lärt er hur Kubernetes hanterar beständig lagring:
- Persistent Volumes (PV:er) abstraherar fysiska lagringsresurser.
- Persistent Volume Claims (PVC:er) är användares begäranden om lagring.
- PV:er har kapacitet, åtkomstlägen (RWO, ROX, RWX) och återanvändningspolicyer (Retain, Delete).
- PVC:er binds till tillgängliga PV:er, och Pods använder sedan PVC:er för att montera lagring.
Detta system gör att applikationer kan lagra data på ett tillförlitligt sätt även när Pods återskapas eller flyttas.
Lär dig Docker och Kubernetes för utvecklare med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Persistenta volymer och volymanspråk” gratis?
Ja – hela texten till ”Persistenta volymer och volymanspråk” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Docker och Kubernetes för utvecklare, kan Ni uppgradera till CoddyKit PRO. Kursen i Docker och Kubernetes för utvecklare innehåller totalt 4 lektioner.
Vad lär jag mig i ”Persistenta volymer och volymanspråk”?
Förstå hur lagring provisioneras och används dynamiskt i Kubernetes med PV:er och PVC:er. Ni övar på Docker och Kubernetes för utvecklare med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Docker och Kubernetes för utvecklare?
Du behöver inga förkunskaper. Utbildningen i Docker och Kubernetes för utvecklare på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Persistenta volymer och volymanspråk”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Docker och Kubernetes för utvecklare-lektionen?
Ja. Varje Docker och Kubernetes för utvecklare-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Persistenta volymer och volymanspråk
- Hantera stateful-applikationer med StatefulSets
- ConfigMaps och Secrets för konfiguration
- StorageClasses och dynamisk provisionering