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/dataExplicació 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: standardExplicació 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-pvcExplicació 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.yamlamb la definició del PV. - Crea un fitxer
pvc.yamlamb la definició de la PVC. - Crea un fitxer
pod.yamlamb 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/datapvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: standardpod.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-pvcComandes:
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
