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: 5
httpGet: - этот блок из двух проверок. Первая по сути является 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