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.
- accessModes: Els modes d'accés sol·licitats (per exemple,
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:
- Crea un fitxer
pv.yaml
amb la definició del PV. - Crea un fitxer
pvc.yaml
amb la definició de la PVC. - Crea un fitxer
pod.yaml
amb la definició del pod que utilitza la PVC. - 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:
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
- 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