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
hostPathper muntar el directori/datadel node host al camí/mnt/datadins del contenidor. - Utilitza la imatge
busyboxi executa el comandamentsleep 3600per 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: DirectoryExplicació 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
