Probes en Kubernetes
Readiness Probes
Esta sonda se utiliza para determinar si un contenedor está listo para servir tráfico. Si la sonda de preparación falla, el contenedor no se considera listo y no se enviará tráfico a él. La sonda de preparación se configura con el campo readinessProbe
en el manifiesto del pod.
Vamos a crear un deployment de ejemplo:
kubectl create deployment try1 --image=nginx
Ahora que sabemos cuándo un pod está saludable, podemos querer asegurarnos de que se mantenga así. Aquí hay un ejemplo de configuración de un readiness probe en un archivo app.yaml
:
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: app
readinessProbe:
periodSeconds: 5
exec:
command:
- cat
- /tmp/healthy
resources: {}
Elimina y recrea el deployment try1
:
kubectl delete deployment try1
kubectl create -f app.yaml
El nuevo deployment try1
debería tener seis pods, pero mostrar cero disponibles. Todos ellos carecen del archivo /tmp/healthy
.
kubectl get deployment
Toma una mirada más cercana a los pods. Usa describe pod
y logs
para investigar problemas. Elige uno de los pods try1
como prueba para crear el archivo de verificación de salud.
kubectl get pods
Ejecuta el shell de bash interactivamente y crea el archivo /tmp/healthy
.
kubectl exec -it try1-<pod-id> -- /bin/bash
touch /tmp/healthy
exit
Espera al menos cinco segundos, luego verifica los pods nuevamente. Una vez que la sonda se ejecute nuevamente, el contenedor debería mostrarse disponible rápidamente. El pod con el archivo /tmp/healthy
existente debería estar en estado READY. El resto continuará mostrando 0/1.
kubectl get pods
Crea el archivo en los pods restantes. Considera usar un bucle for
como un método fácil para actualizar cada pod.
for name in $(kubectl get pods -l app=try1 -o name); do kubectl exec $name -- touch /tmp/healthy; done
Puede tomar un corto tiempo para que las sondas verifiquen el archivo y los chequeos de salud tengan éxito.
kubectl get pods
- Lista de vídeos en Youtube: Curso Kubernetes