Unified, geautomatiseerd en klaar om data om te zetten in informatie.
Ontdek hoe u de ware waarde van uw gegevens kunt ontsluiten.
Het beheer van opslag voor stateful applicaties is een cruciaal aspect van containerorkestratie. Kubernetes Persistent Volume (PV ) is een fundamentele functie die deze behoefte aanpakt door een mechanisme te bieden om opslagresources onafhankelijk van de levenscyclus van individuele pods te beheren. In dit artikel gaan we in op het concept van Kubernetes Persistent Volume, de functies en best practices om het effectief te gebruiken in uw Kubernetes-clusters.
Een Kubernetes Persistent Volume (PV ) is een opslagresource in een Kubernetes-cluster dat de onderliggende opslagtechnologie abstractiseert. In tegenstelling tot tijdelijke opslag, die is gekoppeld aan de levenscyclus van een pod en verdwijnt wanneer de pod wordt beëindigd, bieden PV's een manier om persistente opslag te beheren en toe te wijzen aan toepassingen. Dit zorgt ervoor dat data intact blijven, zelfs als de pods die er toegang toe hebben, worden beëindigd of opnieuw worden gepland.
Het gebruik van persistente volumes biedt voordelen zoals:
Kubernetes Persistent Volumes bieden verschillende belangrijke functies die ze krachtig en aanpasbaar maken voor diverse opslagbehoeften:
Opslagklassen werken als sjablonen die verschillende niveaus of categorieën van opslag definiëren die in een cluster beschikbaar zijn. Ze kunnen kenmerken specificeren zoals prestaties (bijv. SSD vs. HDD), capaciteit, duurzaamheid en kosten. Hierdoor kunnen beheerders opslag aanbieden die is afgestemd op de specifieke vereisten van applicaties.
Toegangsmodi definiëren hoe pods kunnen interageren met de opslag die door een PV wordt geleverd. Hier is een overzicht van de algemene modi:
Het terugvorderingsbeleid bepaalt hoe Kubernetes omgaat met een PV nadat deze niet langer aan een pod is gebonden. Het belangrijkste beleid omvat:
Kubernetes maakt gebruik van volumeplug-ins om de kloof tussen het platform en verschillende opslagaanbieders te overbruggen. Deze plug-ins stellen Kubernetes in staat om diverse backends voor opslag te begrijpen en ermee te communiceren, waaronder lokale opslag, network attached storage (NAS)-oplossingen zoals NFS of iSCSI en cloudprovider-specifieke opslagdiensten zoals AWS EBS of GCE Persistent Disk. Deze plug-in-architectuur biedt aanzienlijke flexibiliteit bij het kiezen en integreren van opslagoplossingen met uw Kubernetes-cluster.
Kubernetes biedt twee primaire methoden voor het leveren van persistente volumes (PV's): statische provisioning en dynamische provisioning. Elke aanpak is geschikt voor verschillende gebruikssituaties en biedt verschillende voordelen.
Bij statische provisioning maken en configureren clusterbeheerders handmatig PV's vooraf. Deze aanpak biedt gedetailleerde controle over de opslagconfiguratie en is geschikt voor scenario's met goed gedefinieerde opslagvereisten die niet vaak veranderen. Om statisch een PV te leveren:
1. Definieer de opslagdetails: Bepaal de opslagcapaciteit, de toegangsmodi (ReadWriteOnce, ReadOnlyMany, ReadWriteMany), het reclaimbeleid (Retain, Recycle, Delete) en de specifieke kenmerken van de volumeplugin (bijv. serveradres voor NFS).
2. Creëer het PV-object met YAML: Gebruik een YAML-manifestbestand om de PV-configuratie te definiëren. Hier is een voorbeeld van NFS-opslag:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv-nfs
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
path: /path/to/nfs/share
server: nfs-server.example.com
3. Pas het YAML-manifest toe: Gebruik de opdracht kubectl apply -f om het PV-object in uw Kubernetes-cluster te creëren.
Dynamische provisioning maakt gebruik van StorageClasses om PV-creatie te automatiseren. Beheerders definiëren StorageClasses die de gewenste opslagkenmerken specificeren en Kubernetes de PV-creatie on-demand laten afhandelen wanneer een PersistentVolumeClaim (PVC) om opslag vraagt. Om dynamische provisioning te gebruiken:
1. Definieer een StorageClass: Maak een StorageClass YAML-manifest aan met de provisioner, het storagetype (bijv. SSD, HDD) en eventuele aanvullende parameters die door de provisioner worden vereist. Hier is een voorbeeld voor AWS EBS:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard-ebs
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
2. Pas het StorageClass-manifest toe: Gebruik kubectl apply -f om het StorageClass-object in uw cluster te creëren.
Het binden van een PV aan een pod stelt applicaties in staat om gebruik te maken van persistente opslag. Deze binding wordt doorgaans bereikt door een PersistentVolumeClaim (PVC).
Een PVC fungeert als een opslagverzoek dat door een pod wordt ingediend. Het specificeert de opslagvereisten die een pod heeft, waaronder:
Er zijn twee primaire methoden om PV's aan pods te binden:
Hier is een voorbeeld van een pod genaamd "pod-voorbeeld" die gebruikmaakt van een PVC genaamd "pvc-voorbeeld":
apiVersion: v1
kind: Pod
metadata:
name: pod-example
spec:
containers:
- name: app
image: nginx
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: pvc-storage
volumes:
- name: pvc-storage
persistentVolumeClaim:
claimName: pvc-example
In dit voorbeeld monteert de pod het PVC genaamd "pvc-voorbeeld" op het pad "/usr/share/nginx/html" in de container. Hierdoor heeft de pod toegang tot zijn persistente data die in de onderliggende PV zijn opgeslagen en kan hij deze beheren.
Het is absoluut noodzakelijk om uw persistente volumes (PV's) effectief te beheren om een efficiënt en schaalbaar opslaggebruik in uw Kubernetes-cluster te behouden. Enkele belangrijke aspecten van PV-beheer zijn:
Kubernetes v1.11 introduceerde de mogelijkheid om de grootte van PV's te wijzigen. Hierdoor kunt u de opslagcapaciteit die aan een PV is toegewezen dynamisch aanpassen, zodat u kunt voldoen aan de groeiende opslagvereisten van uw applicaties.
Om de grootte van een PV te wijzigen, werkt u het opslagverzoek van de PVC bij: Bewerk het PVC dat verwijst naar de PV en wijzig de opslagwaarde binnen de resources.vraagt om sectie van de YAML-specificatie van het PVC. Om bijvoorbeeld de grootte van een PVC genaamd "pvc-voorbeeld" te vergroten naar 20Gi, moet u het YAML-manifest bijwerken:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-example
spec:
resources:
requests:
storage: 20Gi
Zodra u het opslagverzoek van PVC bijwerkt, probeert Kubernetes de grootte van de onderliggende opslag die voor de PV is voorzien te wijzigen. Het aanpassen van de grootte van een PV is over het algemeen een eenrichtingsoperatie (uitbreiding van opslag). Het verkleinen van de omvang van een PV wordt niet ondersteund vanwege mogelijke problemen met dataverlies.
Om een PV te verwijderen, moet u ervoor zorgen dat deze momenteel niet gebonden is aan PVC's. U kunt een PV die door een PVC wordt gebruikt niet verwijderen om dataverlies te voorkomen. Zo kunt u een PV verwijderen:
kubectl delete pv pv-example
Vervang pv-voorbeeld door de werkelijke naam van de PV die u wilt verwijderen.
Hoewel de kernopslagcapaciteit niet direct kan worden gewijzigd binnen een PV-object, kunt u bepaalde Metadata veldenvan een PV bijwerken, zoals labels of annotaties. Deze labels en annotaties kunnen worden gebruikt om uw PV's binnen het cluster beter te organiseren, te identificeren en te beheren.
Hieronder volgen enkele van de beste praktijken die u moet volgen om het meeste uit Kubernetes persistente volumes te halen:
Kubernetes Persistent Volumes (PV's) bieden een fundamenteel mechanisme voor het beheer van opslag in stateful applicaties. Door gebruik te maken van PV's kunt u zorgen voor datapersistentie, hoge beschikbaarheid en efficiënt opslaggebruik binnen uw Kubernetes-cluster. Oplossingen zoals Portworx van Pure Storage bieden een intuïtieve manier om de voordelen van Kubernetes' persistente volumes te benutten. Met functies zoals hoge beschikbaarheid, disaster recovery en back-up die kunstmatige intelligentie gebruiken voor verbeterde efficiëntie, is Portworx de ideale Kubernetes persistente opslagoplossing voor gecontaineriseerde toepassingen.
Maak je klaar voor het meest waardevolle evenement dat je dit jaar zult bijwonen.
Krijg toegang tot on-demand video's en demo's om te zien wat Everpure kan doen.
Charlie Giancarlo over waarom het beheren van data en niet opslag de toekomst zal zijn. Ontdek hoe een uniforme aanpak de IT-activiteiten van bedrijven transformeert.
Moderne workloads vragen om AI-ready snelheid, beveiliging en schaalbaarheid. Is uw stack er klaar voor?