Los probes son como comprobaciones que kubernetes nos suministra para que podamos comprobar entre otras cosas, si un pod está listo para recibir tráfico, si tienen algún problema, etc
Tenemos tres tipos:
Tenemos tres formas de hacer la comprobación de un probe:
Con liveness probe revisamos el estado del contenedor y si el estado del contenedor no es el correcto Kubernetes lo reiniciará de forma automática
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
args:
- /server
livenessProbe: #hace una petición por el puerto 8080 en espera de obtener un valor de 200
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 #creamos un fichero , espera 30 sg, lo borra y vuelve a esperar 600s
livenessProbe: # LA prueba ses hacer un cat del fichero que creamos anteriormente cada 5 s
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5 #Tiempo de espera antes de empezar las comprobaciones
periodSeconds: 5 #Cada cuanto tiempo hace las comprobaciones
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20