Els volums persistents (Persistent Volumes, PV) són una part fonamental de l'emmagatzematge en Kubernetes. Proporcionen una manera d'abstraure l'emmagatzematge físic i permeten que les aplicacions utilitzin emmagatzematge persistent de manera independent de la infraestructura subjacent.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs après:

  • Què són els volums persistents i per què són importants.
  • Com es defineixen i es gestionen els volums persistents en Kubernetes.
  • La diferència entre volums persistents i reclamacions de volums persistents.
  • Com utilitzar volums persistents en les teves aplicacions.

Què és un Volum Persistent?

Un volum persistent (PV) és un recurs d'emmagatzematge en un clúster de Kubernetes que ha estat provisionat per un administrador. Els PV són recursos del clúster, igual que els nodes, i no estan lligats a cap pod específic. Els PV poden ser provisionats de manera dinàmica o estàtica.

Característiques Clau dels PV:

  • Persistència: Els PV persisteixen més enllà del cicle de vida dels pods.
  • Abstracció: Proporcionen una abstracció sobre l'emmagatzematge físic, permetent que les aplicacions utilitzin emmagatzematge sense preocupar-se de la infraestructura subjacent.
  • Gestió de Recursos: Els PV són gestionats pel clúster de Kubernetes, permetent una gestió centralitzada de l'emmagatzematge.

Definició d'un Volum Persistent

Un PV es defineix mitjançant un objecte de Kubernetes. A continuació es mostra un exemple de definició d'un PV:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard
  hostPath:
    path: /mnt/data

Explicació del Codi:

  • apiVersion: La versió de l'API de Kubernetes.
  • kind: El tipus de recurs, en aquest cas PersistentVolume.
  • metadata: Informació sobre el PV, com ara el nom.
  • spec: L'especificació del PV, que inclou:
    • capacity: La capacitat d'emmagatzematge del PV.
    • accessModes: Els modes d'accés del PV (per exemple, ReadWriteOnce).
    • persistentVolumeReclaimPolicy: La política de reclamació del PV (per exemple, Retain).
    • storageClassName: El nom de la classe d'emmagatzematge.
    • hostPath: El camí de l'emmagatzematge físic en el node.

Reclamacions de Volums Persistents

Una reclamació de volum persistent (Persistent Volume Claim, PVC) és una sol·licitud d'emmagatzematge per part d'un usuari. Els PVC són similars als pods en què els pods consumeixen recursos del node i els PVC consumeixen recursos dels PV.

Definició d'una PVC

A continuació es mostra un exemple de definició d'una PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: standard

Explicació del Codi:

  • apiVersion: La versió de l'API de Kubernetes.
  • kind: El tipus de recurs, en aquest cas PersistentVolumeClaim.
  • metadata: Informació sobre la PVC, com ara el nom.
  • spec: L'especificació de la PVC, que inclou:
    • accessModes: Els modes d'accés sol·licitats (per exemple, ReadWriteOnce).
    • resources: Els recursos sol·licitats, com ara la capacitat d'emmagatzematge.
    • storageClassName: El nom de la classe d'emmagatzematge.

Utilització de Volums Persistents en Aplicacions

Per utilitzar un PV en una aplicació, primer has de crear una PVC i després referenciar-la en la definició del pod. A continuació es mostra un exemple de com utilitzar una 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ó del Codi:

  • containers: Defineix els contenidors dins del pod.
    • volumeMounts: Especifica on muntar el volum dins del contenidor.
  • volumes: Defineix els volums que utilitzarà el pod.
    • persistentVolumeClaim: Referencia la PVC creada anteriorment.

Exercici Pràctic

Objectiu:

Crear un volum persistent i una reclamació de volum persistent, i utilitzar-los en un pod.

Passos:

  1. Crea un fitxer pv.yaml amb la definició del PV.
  2. Crea un fitxer pvc.yaml amb la definició de la PVC.
  3. Crea un fitxer pod.yaml amb la definició del pod que utilitza la PVC.
  4. Aplica els fitxers al clúster de Kubernetes.

Solució:

pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard
  hostPath:
    path: /mnt/data

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: standard

pod.yaml

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

Comandes:

kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml
kubectl apply -f pod.yaml

Resum

En aquest tema, hem après què són els volums persistents i com es defineixen i es gestionen en Kubernetes. També hem vist com utilitzar volums persistents en les nostres aplicacions mitjançant reclamacions de volums persistents. Els volums persistents són una eina poderosa per gestionar l'emmagatzematge en un clúster de Kubernetes, proporcionant persistència i abstracció sobre l'emmagatzematge físic.

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