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) i zones especifica les zones de disponibilitat.
  • reclaimPolicy: Defineix què passa amb el volum quan es suprimeix la PVC. Les opcions són Retain, Delete i Recycle.

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.

Exercicis Pràctics

Exercici 1: Crear una StorageClass i una PVC

  1. Crea una StorageClass anomenada standard amb el provisioner kubernetes.io/gce-pd i el tipus pd-standard.
  2. Crea una PVC anomenada my-standard-pvc que utilitzi la StorageClass standard 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

  1. Modifica la StorageClass standard per utilitzar la política de reclamació Delete.
  2. Crea una nova PVC anomenada my-deletable-pvc que utilitzi la StorageClass standard 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 o Recycle.
  • 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

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

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats