En aquest tema, explorarem com desplegar i gestionar aplicacions stateful en Kubernetes. Les aplicacions stateful són aquelles que mantenen l'estat entre les execucions, com bases de dades, sistemes de fitxers distribuïts, i altres aplicacions que requereixen persistència de dades.

Objectius del Tema

  • Entendre què són les aplicacions stateful.
  • Aprendre a utilitzar StatefulSets per gestionar aplicacions stateful en Kubernetes.
  • Configurar volums persistents per a l'emmagatzematge de dades.
  • Desplegar una aplicació stateful com a exemple pràctic.

Què són les Aplicacions Stateful?

Les aplicacions stateful són aquelles que necessiten mantenir l'estat entre les execucions. Això significa que les dades generades per l'aplicació han de ser persistents i accessibles fins i tot després de reiniciar o actualitzar l'aplicació.

Exemples d'Aplicacions Stateful

  • Bases de dades (MySQL, PostgreSQL)
  • Sistemes de fitxers distribuïts (HDFS, Ceph)
  • Aplicacions de missatgeria (Kafka, RabbitMQ)

StatefulSets

StatefulSets són un tipus de controlador de Kubernetes dissenyat específicament per gestionar aplicacions stateful. Proporcionen garanties úniques per a la identitat i l'emmagatzematge dels pods.

Característiques Clau dels StatefulSets

  • Identitat Estable: Cada pod en un StatefulSet té un nom únic i estable.
  • Ordre de Creació i Eliminació: Els pods es creen i s'eliminen en un ordre determinat.
  • Volums Persistents: Cada pod pot tenir el seu propi volum persistent.

Exemple de StatefulSet

A continuació, es mostra un exemple de configuració d'un StatefulSet per a una base de dades MySQL:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: "mysql"
  replicas: 3
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password"
  volumeClaimTemplates:
  - metadata:
      name: mysql-persistent-storage
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

Explicació del Codi

  • apiVersion: La versió de l'API de Kubernetes.
  • kind: El tipus de recurs, en aquest cas, StatefulSet.
  • metadata: Informació sobre el StatefulSet, com el nom.
  • spec: L'especificació del StatefulSet.
    • serviceName: El nom del servei associat.
    • replicas: El nombre de rèpliques.
    • selector: Els selectors d'etiquetes per als pods.
    • template: La plantilla per als pods.
      • metadata: Les etiquetes per als pods.
      • spec: L'especificació dels contenidors dins dels pods.
        • containers: La llista de contenidors.
          • name: El nom del contenidor.
          • image: La imatge del contenidor.
          • ports: Els ports exposats pel contenidor.
          • volumeMounts: Els volums muntats dins del contenidor.
          • env: Les variables d'entorn.
    • volumeClaimTemplates: Les plantilles de reclamació de volums persistents.

Exercici Pràctic

Objectiu

Desplegar una base de dades MySQL utilitzant StatefulSets i configurar volums persistents per a l'emmagatzematge de dades.

Passos

  1. Crear un fitxer YAML amb la configuració del StatefulSet (com l'exemple anterior).
  2. Aplicar la configuració utilitzant kubectl:
    kubectl apply -f mysql-statefulset.yaml
    
  3. Verificar l'estat del StatefulSet:
    kubectl get statefulsets
    kubectl get pods -l app=mysql
    
  4. Accedir a la base de dades MySQL:
    kubectl exec -it <mysql-pod-name> -- mysql -u root -p
    

Solució

Assegura't que els pods es creen correctament i que cada pod té el seu propi volum persistent. Pots verificar els volums utilitzant:

kubectl get pvc

Errors Comuns i Consells

  • Error: Pod no es crea: Verifica que la imatge del contenidor és correcta i que els volums persistents estan configurats adequadament.
  • Error: No es pot accedir a la base de dades: Assegura't que les variables d'entorn estan configurades correctament i que el servei està exposat.

Resum

En aquest tema, hem après a desplegar aplicacions stateful utilitzant StatefulSets en Kubernetes. Hem vist com configurar volums persistents per a l'emmagatzematge de dades i hem desplegat una base de dades MySQL com a exemple pràctic. Amb aquests coneixements, estàs preparat per gestionar aplicacions stateful en un entorn de 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