Introducció

En Kubernetes, els controls de salut (health checks) i les probes són mecanismes essencials per assegurar que les aplicacions desplegades en un clúster funcionin correctament. Aquests mecanismes permeten a Kubernetes detectar i gestionar els errors en les aplicacions, garantint així una alta disponibilitat i resiliència.

Tipus de Probes

Kubernetes ofereix tres tipus principals de probes per monitoritzar l'estat dels containers:

  1. Liveness Probe: Verifica si un container està viu. Si falla, Kubernetes reiniciarà el container.
  2. Readiness Probe: Determina si un container està llest per rebre tràfic. Si falla, Kubernetes deixarà de dirigir el tràfic a aquest container.
  3. Startup Probe: Utilitzat per verificar si una aplicació ha començat correctament. Si falla, Kubernetes reiniciarà el container.

Configuració de Probes

Les probes es configuren en els manifests dels pods. A continuació, es mostren exemples de configuració per a cada tipus de probe.

Liveness Probe

La liveness probe s'utilitza per assegurar que l'aplicació no estigui bloquejada. Si la probe falla, Kubernetes reiniciarà el container.

apiVersion: v1
kind: Pod
metadata:
  name: liveness-pod
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Readiness Probe

La readiness probe s'utilitza per determinar si l'aplicació està llesta per rebre tràfic. Si la probe falla, Kubernetes deixarà de dirigir el tràfic a aquest container.

apiVersion: v1
kind: Pod
metadata:
  name: readiness-pod
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Startup Probe

La startup probe s'utilitza per verificar si l'aplicació ha començat correctament. Si la probe falla, Kubernetes reiniciarà el container.

apiVersion: v1
kind: Pod
metadata:
  name: startup-pod
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    startupProbe:
      httpGet:
        path: /startup
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Exercicis Pràctics

Exercici 1: Configurar una Liveness Probe

  1. Crea un manifest de pod amb una liveness probe que verifiqui l'estat de l'aplicació a través d'un endpoint HTTP /healthz al port 8080.
  2. Desplega el pod en el teu clúster de Kubernetes.
  3. Simula un error en l'aplicació i observa com Kubernetes reinicia el container.

Solució

apiVersion: v1
kind: Pod
metadata:
  name: liveness-pod
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Exercici 2: Configurar una Readiness Probe

  1. Crea un manifest de pod amb una readiness probe que verifiqui si l'aplicació està llesta a través d'un endpoint HTTP /ready al port 8080.
  2. Desplega el pod en el teu clúster de Kubernetes.
  3. Simula un escenari on l'aplicació no està llesta i observa com Kubernetes deixa de dirigir el tràfic a aquest container.

Solució

apiVersion: v1
kind: Pod
metadata:
  name: readiness-pod
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Exercici 3: Configurar una Startup Probe

  1. Crea un manifest de pod amb una startup probe que verifiqui si l'aplicació ha començat correctament a través d'un endpoint HTTP /startup al port 8080.
  2. Desplega el pod en el teu clúster de Kubernetes.
  3. Simula un escenari on l'aplicació no pot començar correctament i observa com Kubernetes reinicia el container.

Solució

apiVersion: v1
kind: Pod
metadata:
  name: startup-pod
spec:
  containers:
  - name: myapp-container
    image: myapp:latest
    startupProbe:
      httpGet:
        path: /startup
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Errors Comuns i Consells

  • Error en la configuració de la ruta o el port: Assegura't que la ruta i el port especificats en la probe coincideixin amb els de l'aplicació.
  • Temps d'espera insuficient: Si l'aplicació triga més temps a estar llesta, ajusta els valors de initialDelaySeconds i periodSeconds adequadament.
  • No utilitzar probes: És una bona pràctica utilitzar probes per assegurar la disponibilitat i resiliència de les aplicacions.

Conclusió

Els controls de salut i les probes són eines poderoses en Kubernetes per assegurar que les aplicacions funcionin correctament i de manera contínua. Configurar correctament les probes pot ajudar a detectar i solucionar problemes de manera automàtica, millorant així la disponibilitat i la resiliència de les aplicacions desplegades en un clúster 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