Introducció
En Kubernetes, els volums persistents (Persistent Volumes, PV) i les reclamacions de volums persistents (Persistent Volume Claims, PVC) són conceptes clau per gestionar l'emmagatzematge persistent. Mentre que els PV representen l'emmagatzematge físic, les PVC són les sol·licituds d'emmagatzematge fetes pels usuaris. Aquest sistema permet desacoblar l'emmagatzematge de les aplicacions, facilitant la gestió i l'escalabilitat.
Conceptes Clau
- Persistent Volume (PV): És un recurs d'emmagatzematge en el clúster que ha estat provisionat per un administrador o dinàmicament mitjançant Storage Classes.
- Persistent Volume Claim (PVC): És una sol·licitud d'emmagatzematge per part d'un usuari. Les PVC poden sol·licitar una certa quantitat d'espai d'emmagatzematge i accés a modes específics (com ara lectura/escriptura).
- Storage Class: Defineix les classes d'emmagatzematge disponibles en el clúster, permetent la provisió dinàmica de PVs.
Flux de Treball
- Creació d'un PV: L'administrador crea un PV o es provisiona dinàmicament.
- Creació d'una PVC: L'usuari crea una PVC especificant les seves necessitats d'emmagatzematge.
- Binding: Kubernetes associa automàticament la PVC amb un PV que compleixi els requisits.
- Ús del PVC: Els pods poden utilitzar la PVC per accedir a l'emmagatzematge persistent.
Exemple Pràctic
- Creació d'un Persistent Volume (PV)
apiVersion: v1 kind: PersistentVolume metadata: name: example-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/data"
Explicació:
capacity
: Defineix la capacitat d'emmagatzematge del PV.accessModes
: Defineix els modes d'accés (ReadWriteOnce, ReadOnlyMany, ReadWriteMany).persistentVolumeReclaimPolicy
: Defineix què passa amb el PV quan es suprimeix la PVC (Retain, Recycle, Delete).hostPath
: Defineix la ubicació física de l'emmagatzematge en el node.
- Creació d'una Persistent Volume Claim (PVC)
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
Explicació:
accessModes
: Defineix els modes d'accés sol·licitats.resources.requests.storage
: Defineix la quantitat d'emmagatzematge sol·licitada.
- Ús de la PVC en un Pod
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: nginx volumeMounts: - mountPath: "/usr/share/nginx/html" name: example-volume volumes: - name: example-volume persistentVolumeClaim: claimName: example-pvc
Explicació:
volumeMounts
: Defineix on es muntarà el volum dins del contenidor.volumes.persistentVolumeClaim.claimName
: Especifica la PVC que s'utilitzarà.
Exercicis Pràctics
Exercici 1: Crear un PV i una PVC
- Crea un PV amb una capacitat de 2Gi i mode d'accés ReadWriteOnce.
- Crea una PVC que sol·liciti 2Gi d'emmagatzematge amb mode d'accés ReadWriteOnce.
- Verifica que la PVC s'ha associat correctament amb el PV.
Solució
Persistent Volume (PV):
apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/mydata"
Persistent Volume Claim (PVC):
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi
Exercici 2: Utilitzar la PVC en un Pod
- Crea un Pod que utilitzi la PVC creada en l'exercici anterior.
- Munta el volum en el camí
/data
dins del contenidor.
Solució
Pod:
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx volumeMounts: - mountPath: "/data" name: my-volume volumes: - name: my-volume persistentVolumeClaim: claimName: my-pvc
Errors Comuns i Consells
- PVC no associada a un PV: Assegura't que hi ha un PV disponible que compleixi els requisits de la PVC.
- Modes d'accés incorrectes: Verifica que els modes d'accés sol·licitats en la PVC coincideixin amb els modes d'accés del PV.
- Capacitat insuficient: Assegura't que la capacitat sol·licitada en la PVC no excedeixi la capacitat del PV.
Conclusió
Les reclamacions de volums persistents (PVC) són una eina poderosa per gestionar l'emmagatzematge persistent en Kubernetes. Permeten als usuaris sol·licitar emmagatzematge de manera dinàmica i desacoblar l'emmagatzematge de les aplicacions. Amb una comprensió clara dels PV, PVC i Storage Classes, pots gestionar l'emmagatzematge de manera eficient i escalable en el teu clúster de Kubernetes.
En el següent mòdul, explorarem les Classes d'Emmagatzematge i com poden ajudar a provisionar dinàmicament volums persistents.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster