Liveness Probe, Readiness Probe
Пробы - это хелсчеки состояния ресурсов. С их помощью можно проверить жив ли контейнер в поде или ресурс в контейнере.
Liveness Probe - контролирует состояние приложения во время его жизни. Работает постоянно.
Readness Probe - проверяет готово ли приложение принимать трафик. Если не готово, оно убирается из балансировки. Работает постоянно.
containers:
- name: nginx
image: nginx:latest
livenessProbe:
failureThreshold: 3
successThreshold: 1
httpGet:
path: /
port: 80
periodSeconds: 10
timeoutSeconds: 1
initialDelaySeconds: 5
readinessProbe:
failureThreshold: 3
successThreshold: 1
exec:
command:
- curl
- http://127.0.0.1:80
periodSeconds: 10
timeoutSeconds: 1
initialDelaySeconds: 5httpGet: - этот блок из двух проверок. Первая по сути является curl к корневой директории. А вторая проверка доступности 80 порта.
exec: - это почти аналог httpGet, но здесь прямо передается команда для выполнения.
failureThreshold: 3 - проверка проводится 3 раза, прежде чем под признается недоступным.
periodSeconds: 10 - говорит о том, как часто должна проводиться эта проверка. Здесь она проводится раз в 10 секунд.
successThreshold: 1 - достаточно одной успешной пробы, чтобы считать, что с приложением все ОК.
timeoutSeconds: 1 - таймаут при ожидании ответа.
initialDelaySeconds: 5 - первую пробу делаем спустя 5 секунд. У тяжелых приложений, например, БД или Java приложение имеет смысл выставить это значение чуть больше, чтобы успело стартануть пока его не кильнули.
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: cam-nginx
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: cam-nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
initialDelaySeconds: 5
readinessProbe:
failureThreshold: 3
exec:
command:
- curl
- http://127.0.0.1:80
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
initialDelaySeconds: 5
restartPolicy: Always
EOF