Introducció
En Kubernetes, els volums són una manera d'emmagatzemar dades que poden ser utilitzades per un o més pods. A diferència dels volums efímers que desapareixen quan el pod es destrueix, els volums en Kubernetes poden persistir més enllà del cicle de vida d'un pod. Això és especialment útil per a aplicacions que necessiten emmagatzemar dades de manera persistent.
Conceptes Clau
- Volum: Un directori accessible per als contenidors d'un pod.
- Volum Persistents (PV): Recursos de l'API de Kubernetes que representen l'emmagatzematge proporcionat per un administrador.
- Reclamació de Volum Persistent (PVC): Una petició d'emmagatzematge per part d'un usuari.
Tipus de Volums
Kubernetes suporta diversos tipus de volums, cadascun amb les seves pròpies característiques i usos. Alguns dels tipus més comuns són:
- emptyDir: Un volum que s'inicialitza com un directori buit. Es crea quan es crea el pod i es manté fins que el pod es destrueix.
- hostPath: Mapa un directori o fitxer del node host al pod.
- nfs: Utilitza un sistema de fitxers de xarxa (NFS) per a l'emmagatzematge.
- persistentVolumeClaim: Utilitza una reclamació de volum persistent per muntar un volum persistent.
Exemple Pràctic
A continuació, es mostra un exemple de com definir un volum emptyDir
en un pod.
Definició del Pod amb un Volum emptyDir
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: html-volume volumes: - name: html-volume emptyDir: {}
Explicació del Codi
- apiVersion: La versió de l'API de Kubernetes.
- kind: El tipus de recurs, en aquest cas, un
Pod
. - metadata: Informació sobre el pod, com ara el nom.
- spec: L'especificació del pod.
- containers: Una llista de contenidors que s'executaran en el pod.
- name: El nom del contenidor.
- image: La imatge del contenidor.
- volumeMounts: Una llista de volums que es muntaran en el contenidor.
- mountPath: El camí dins del contenidor on es muntarà el volum.
- name: El nom del volum.
- volumes: Una llista de volums que es definiran en el pod.
- name: El nom del volum.
- emptyDir: Un volum que s'inicialitza com un directori buit.
- containers: Una llista de contenidors que s'executaran en el pod.
Exercici Pràctic
Objectiu
Crear un pod que utilitzi un volum hostPath
per muntar un directori del node host al pod.
Instruccions
- Crea un fitxer YAML anomenat
hostpath-pod.yaml
. - Defineix un pod que utilitzi un volum
hostPath
per muntar el directori/data
del node host al camí/mnt/data
dins del contenidor. - Utilitza la imatge
busybox
i executa el comandamentsleep 3600
per mantenir el contenidor en execució.
Solució
apiVersion: v1 kind: Pod metadata: name: hostpath-pod spec: containers: - name: busybox-container image: busybox command: ['sh', '-c', 'sleep 3600'] volumeMounts: - mountPath: /mnt/data name: hostpath-volume volumes: - name: hostpath-volume hostPath: path: /data type: Directory
Explicació del Codi
- command: El comandament que s'executarà en el contenidor (
sleep 3600
). - hostPath: Defineix un volum que mapeja un directori del node host (
/data
) al pod.
Resum
En aquesta secció, hem après què són els volums en Kubernetes i com es poden utilitzar per emmagatzemar dades de manera persistent. Hem vist diferents tipus de volums i hem treballat amb exemples pràctics per entendre com definir i utilitzar volums en un pod. En la següent secció, explorarem els volums persistents i les reclamacions de volums persistents per a una gestió d'emmagatzematge més avançada.
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