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

  1. Creació d'un PV: L'administrador crea un PV o es provisiona dinàmicament.
  2. Creació d'una PVC: L'usuari crea una PVC especificant les seves necessitats d'emmagatzematge.
  3. Binding: Kubernetes associa automàticament la PVC amb un PV que compleixi els requisits.
  4. Ús del PVC: Els pods poden utilitzar la PVC per accedir a l'emmagatzematge persistent.

Exemple Pràctic

  1. 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.

  1. 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.

  1. Ú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

  1. Crea un PV amb una capacitat de 2Gi i mode d'accés ReadWriteOnce.
  2. Crea una PVC que sol·liciti 2Gi d'emmagatzematge amb mode d'accés ReadWriteOnce.
  3. 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

  1. Crea un Pod que utilitzi la PVC creada en l'exercici anterior.
  2. 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

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

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats