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:
- Liveness Probe: Verifica si un container està viu. Si falla, Kubernetes reiniciarà el container.
- Readiness Probe: Determina si un container està llest per rebre tràfic. Si falla, Kubernetes deixarà de dirigir el tràfic a aquest container.
- 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
- 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. - Desplega el pod en el teu clúster de Kubernetes.
- 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
- 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. - Desplega el pod en el teu clúster de Kubernetes.
- 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
- 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. - Desplega el pod en el teu clúster de Kubernetes.
- 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
iperiodSeconds
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
- 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