În Kubernetes, gestiunea stocării este decuplată conform principiului separării responsabilităților: administratorul de infrastructură configurează bazinele de stocare fizică (prin StorageClass sau PersistentVolume – PV), în timp ce dezvoltatorii solicită spațiu de stocare printr-o revendicare declarativă (PersistentVolumeClaim – PVC) fără a fi nevoie să cunoască detaliile hardware din spate.
Provizionarea dinamică a stocării prin StorageClass și PVC
# 1. Definirea unui StorageClass (oferit de providerul cloud sau CSI local):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-nvme-ssd
provisioner: kubernetes.io/aws-ebs # Sau hetzner.csi.k8s.io / cinder etc.
parameters:
type: gp3
iops: "3000"
volumeBindingMode: WaitForFirstConsumer # Creează discul doar când Pod-ul este programat pe un nod!
---
# 2. Solicitarea stocării de către aplicație printr-un PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-storage-pvc
spec:
accessModes:
- ReadWriteOnce # Volumul poate fi montat de un singur nod la un moment dat
storageClassName: fast-nvme-ssd
resources:
requests:
storage: 50Gi
Modurile de Acces pentru Volume (Access Modes):
ReadWriteOnce (RWO):Volumul poate fi montat pentru citire și scriere de către un singur nod. Modul standard pentru volume de tip Block Storage (AWS EBS, Hetzner Volume).ReadOnlyMany (ROX):Volumul poate fi montat numai-citire de către multiple noduri simultan.ReadWriteMany (RWX):Volumul poate fi montat simultan pentru citire și scriere de către sute de Pod-uri de pe noduri diferite (necesită sisteme de fișiere distribuite precum NFS, CephFS sau AWS EFS).