Unificata, automatizzata e pronta a trasformare i dati in intelligence.
Scopri come trarre il massimo dai tuoi dati.
La gestione dello storage per le applicazioni stateful è un aspetto cruciale dell'orchestrazione dei container. Kubernetes Persistent Volume (PV) è una funzionalità fondamentale che soddisfa questa esigenza fornendo un meccanismo per gestire le risorse di storage in modo indipendente dal ciclo di vita dei singoli pod. In questo articolo approfondiremo il concetto di Kubernetes Persistent Volume, le sue caratteristiche e le best practice per utilizzarlo efficacemente nei cluster Kubernetes.
Un volume persistente Kubernetes (PV ) è una risorsa di storage in un cluster Kubernetes che astrae la tecnologia di storage sottostante. A differenza dello storage temporaneo, che è legato al ciclo di vita di un pod e scompare quando il pod viene terminato, le PV forniscono un modo per gestire e allocare lo storage persistente alle applicazioni. Ciò garantisce che i dati rimangano intatti anche se i pod che vi accedono vengono terminati o ripianificati.
L'utilizzo di volumi persistenti offre vantaggi quali:
I volumi persistenti di Kubernetes offrono diverse funzionalità chiave che li rendono potenti e adattabili alle diverse esigenze di storage:
Le classi di storage agiscono come modelli che definiscono diversi tier o categorie di storage disponibili in un cluster. Possono specificare caratteristiche come le performance (ad esempio, SSD e HDD), la capacità, la durata e i costi. Ciò consente agli amministratori di eseguire il provisioning dello storage in base ai requisiti specifici delle applicazioni.
Le modalità di accesso definiscono il modo in cui i pod possono interagire con lo storage fornito da una PV. Ecco una descrizione dettagliata delle modalità più comuni:
Le policy di recupero stabiliscono il modo in cui Kubernetes gestisce una PV dopo che non è più legata a un pod. Le policy principali includono:
Kubernetes sfrutta i plug-in di volume per colmare il divario tra la piattaforma e vari provider di storage. Questi plug-in consentono a Kubernetes di comprendere e interagire con diversi backend di storage, tra cui storage locale, soluzioni NAS (Network Attached Storage) come NFS o iSCSI e servizi di storage specifici per provider cloud come AWS EBS o GCE Persistent Disk. Questa architettura plug-in offre una notevole flessibilità nella scelta e nell'integrazione delle soluzioni di storage con il cluster Kubernetes.
Kubernetes offre due metodi principali per il provisioning dei volumi persistenti (PV): il provisioning statico e il provisioning dinamico. Ogni approccio si adatta a diversi casi d'uso e offre vantaggi distinti.
Nel provisioning statico, gli amministratori dei cluster creano e configurano manualmente le PV in anticipo. Questo approccio fornisce un controllo granulare sulla configurazione dello storage ed è adatto per scenari con requisiti di storage ben definiti che non cambiano di frequente. Per eseguire il provisioning statico di una PV:
1. Definisci i dettagli dello storage: Determinare la capacità di storage, le modalità di accesso (ReadWriteOnce, ReadOnlyMany, ReadWriteMany), i criteri di recupero (Retain, Recycle, Delete) e le specifiche del plug-in di volume (ad esempio, l'indirizzo del server per NFS).
2. Crea l'oggetto PV utilizzando YAML: Utilizzare un file manifest YAML per definire la configurazione PV. Ecco un esempio di utilizzo dello storage NFS:
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. Applicare il manifesto YAML: Usa il comando kubectl apply -f per creare l'oggetto PV nel cluster Kubernetes.
Il provisioning dinamico sfrutta StorageClasses per automatizzare la creazione di PV. Gli amministratori definiscono le classi di storage che specificano le caratteristiche di storage desiderate e consentono a Kubernetes di gestire la creazione di PV on demand quando un PersistentVolumeClaim (PVC) richiede lo storage. Per utilizzare il provisioning dinamico:
1. Definizione di una classe di storage: Creare un manifesto YAML StorageClass che specifichi il provisioning, il tipo di storage (es. SSD, HDD) e gli eventuali parametri aggiuntivi richiesti dal provisioning. Ecco un esempio per AWS EBS:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard-ebs
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
2. Applica il manifesto StorageClass: Usa kubectl apply -f per creare l'oggetto StorageClass nel cluster.
Il legame di una PV a un pod consente alle applicazioni di sfruttare lo storage persistente. Questo legame si ottiene in genere tramite un PersistentVolumeClaim (PVC ).
Un PVC agisce come una richiesta di storage inviata da un pod. Specifica i requisiti di storage di un pod, tra cui:
Esistono due metodi principali per legare le PV ai pod:
Ecco un esempio di pod denominato "pod-example" che utilizza un PVC denominato "pvc-example":
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 questo esempio, il pod monta il PVC denominato "pvc-esempio" in corrispondenza del percorso "/usr/share/nginx/html" all'interno del container. Ciò consente al pod di accedere e gestire i dati persistenti memorizzati nella PV sottostante.
È essenziale gestire efficacemente i volumi persistenti (PV) per mantenere un utilizzo dello storage efficiente e scalabile nel cluster Kubernetes. Alcuni aspetti chiave della gestione della PV includono:
Kubernetes v1.11 ha introdotto la possibilità di ridimensionare le PV. In questo modo puoi regolare dinamicamente la capacità di storage allocata a una PV, in base ai requisiti di storage in continua crescita delle tue applicazioni.
Per ridimensionare un PV, aggiorna la richiesta di storage del PVC: Modificare il PVC che fa riferimento alla PV e modificare il valore di storage all'interno della sezione Risorse.richiede della specifica YAML del PVC. Ad esempio, per aumentare le dimensioni di un PVC denominato "pvc-esempio" a 20Gi, aggiornare il manifesto YAML:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-example
spec:
resources:
requests:
storage: 20Gi
Una volta aggiornata la richiesta di storage del PVC, Kubernetes tenta di ridimensionare lo storage sottostante fornito per il PV. Il ridimensionamento di una PV è generalmente un'operazione unidirezionale (espansione dello storage). La riduzione delle dimensioni di una PV non è supportata a causa di potenziali problemi di perdita di dati.
Per eliminare una PV, assicurati che non sia attualmente legata ad alcun PVC. Non è possibile eliminare una PV utilizzata da un PVC per evitare la perdita di dati. Ecco come eliminare una PV:
kubectl delete pv pv-example
Sostituisci l'esempio pv con il nome effettivo della PV che desideri eliminare.
Sebbene la capacità di storage di base non possa essere modificata direttamente all'interno di un oggetto PV, è possibile aggiornare alcuni campi di metadati di una PV, come etichette o annotazioni. Queste etichette e annotazioni possono essere utilizzate per organizzare, identificare e gestire meglio le PV all'interno del cluster.
Di seguito sono riportate alcune delle best practice da seguire per ottenere il massimo dai volumi persistenti Kubernetes:
I volumi persistenti (PV) di Kubernetes offrono un meccanismo fondamentale per la gestione dello storage nelle applicazioni stateful. Sfruttando le PV, puoi garantire la persistenza dei dati, l'alta disponibilità e un utilizzo efficiente dello storage all'interno del cluster Kubernetes. Soluzioni come Portworx di Pure Storage offrono un modo intuitivo per sfruttare i vantaggi dei volumi persistenti di Kubernetes. Con funzionalità come alta disponibilità, disaster recovery e backup che utilizzano l'intelligenza artificiale per migliorare l'efficienza, Portworx è la soluzione di storage persistente Kubernetes ideale per le applicazioni containerizzate.
Preparati all'evento più importante a cui parteciperai quest'anno.
Accedi a video e demo on demand per scoprire i vantaggi che Pure Storage ti offre.
Charlie Giancarlo spiega perché il futuro è nella gestione dei dati, non dello storage. Scopri in che modo un approccio unificato trasforma le operazioni IT aziendali.
I workload moderni richiedono velocità, sicurezza e scalabilità AI-ready. Il tuo stack è pronto?