Introducció
Les classes d'emmagatzematge (Storage Classes) en Kubernetes proporcionen una manera de definir diferents nivells d'emmagatzematge que es poden utilitzar dins d'un clúster. Aquestes classes permeten als administradors definir polítiques d'emmagatzematge que poden ser utilitzades pels usuaris per sol·licitar emmagatzematge persistent amb característiques específiques.
Conceptes Clau
- StorageClass: Un objecte de Kubernetes que defineix una classe d'emmagatzematge amb paràmetres específics.
- Provisioner: El component que crea els volums persistents (PVs) basats en la StorageClass.
- Parameters: Paràmetres específics per al provisioner que defineixen les característiques del volum.
- Reclaim Policy: Política que defineix què passa amb el volum persistent quan es suprimeix la PersistentVolumeClaim (PVC).
Creació d'una StorageClass
Exemple de YAML per a una StorageClass
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: kubernetes.io/aws-ebs parameters: type: gp2 zones: "us-west-1a, us-west-1b" reclaimPolicy: Retain
Explicació del YAML
- apiVersion: La versió de l'API de Kubernetes.
- kind: El tipus de recurs, en aquest cas, StorageClass.
- metadata: Informació sobre la StorageClass, com ara el nom.
- provisioner: El provisioner que s'utilitzarà per crear els volums. En aquest exemple, s'utilitza
kubernetes.io/aws-ebs
per a Amazon EBS. - parameters: Paràmetres específics per al provisioner. En aquest cas,
type
defineix el tipus de disc EBS (gp2) izones
especifica les zones de disponibilitat. - reclaimPolicy: Defineix què passa amb el volum quan es suprimeix la PVC. Les opcions són
Retain
,Delete
iRecycle
.
Utilització d'una StorageClass
Creació d'una PersistentVolumeClaim (PVC) amb una StorageClass
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-fast-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: fast
Explicació del YAML
- 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.
- accessModes: Defineix els modes d'accés al volum.
ReadWriteOnce
permet que el volum sigui muntat en mode lectura-escriptura per un únic node. - resources: Defineix els recursos sol·licitats, en aquest cas, 10Gi de capacitat d'emmagatzematge.
- storageClassName: El nom de la StorageClass que s'utilitzarà per crear el volum.
- accessModes: Defineix els modes d'accés al volum.
Exercicis Pràctics
Exercici 1: Crear una StorageClass i una PVC
- Crea una StorageClass anomenada
standard
amb el provisionerkubernetes.io/gce-pd
i el tipuspd-standard
. - Crea una PVC anomenada
my-standard-pvc
que utilitzi la StorageClassstandard
i sol·liciti 5Gi d'emmagatzematge.
Solució
StorageClass YAML:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: kubernetes.io/gce-pd parameters: type: pd-standard reclaimPolicy: Retain
PersistentVolumeClaim YAML:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-standard-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: standard
Exercici 2: Modificar la Reclaim Policy
- Modifica la StorageClass
standard
per utilitzar la política de reclamacióDelete
. - Crea una nova PVC anomenada
my-deletable-pvc
que utilitzi la StorageClassstandard
i sol·liciti 2Gi d'emmagatzematge.
Solució
StorageClass YAML:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: kubernetes.io/gce-pd parameters: type: pd-standard reclaimPolicy: Delete
PersistentVolumeClaim YAML:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-deletable-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi storageClassName: standard
Errors Comuns i Consells
- Error: "no persistent volumes available for this claim and no storage class is set": Assegura't que la PVC especifica una StorageClass existent.
- Error: "invalid reclaim policy": La política de reclamació ha de ser
Retain
,Delete
oRecycle
. - Consell: Utilitza noms descriptius per a les StorageClasses per facilitar la seva identificació i ús.
Conclusió
Les classes d'emmagatzematge en Kubernetes permeten una gestió flexible i eficient dels recursos d'emmagatzematge dins d'un clúster. Amb l'ús de StorageClasses, els administradors poden definir diferents nivells d'emmagatzematge i els usuaris poden sol·licitar emmagatzematge amb característiques específiques de manera senzilla. En el proper mòdul, explorarem els StatefulSets, que permeten gestionar aplicacions amb estat de manera eficient en Kubernetes.
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