MyTetra Share
Делитесь знаниями!
livenessProbe и readinessProbe в Kubernetes
25.09.2018
11:33
Автор: br0ke
Текстовые метки: kubernetes, k8s, kube, kubectl, probe, probes, healthcheck, readiness, liveness, health, livenessProbe, readinessProbe, http, tcp
Раздел: Информационные технологии - Linux - Kubernetes

Компонент Kubernetes под названием kubelet, который отвечает за запуск и управление контейнерами, может так же проверять состояние приложения через специальные liveness и readiness проверки.


Зачем это нужно? Случается, что контейнер с приложением жив, он не упал, но приложение внутри него не может работать по какой-либо причине, например, из-за deadlock'а или зависания из-за какой-нибудь программной ошибки.


livenessProbe:


Периодическая проверка, которая позволяет убедиться, что приложение всё ещё работает.


Пример:


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

livenessProbe:

exec:

command:

- cat

- /tmp/healthy

initialDelaySeconds: 5

periodSeconds: 5


В примере livenessProbe состоит из вывода содержимого файла и выполняется каждые 5 секунд с начальной задержкой 5 секунд. Когда проверяемый файл перестанет существовать, livenessProbe будет заканчиваться ошибкой и контейнер будет перезапущен или пересоздан.



livenessProbe через HTTP:


Пример:


apiVersion: v1

kind: Pod

metadata:

labels:

test: liveness

name: liveness-http

spec:

containers:

- name: liveness

image: k8s.gcr.io/liveness

args:

- /server

livenessProbe:

httpGet:

path: /healthz

port: 8080

httpHeaders:

- name: X-Custom-Header

value: Awesome

initialDelaySeconds: 3

periodSeconds: 3



livenessProbe через TCP:


Пример:


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



readinessProbe -- проверка готовности:


Эта проверка позволяет убедиться, что приложение произвело все необходимые для запуска действия и готово принимать трафик или выполнять другую свою работу. После того, как readinessProbe начинают выполняться успешно, приложение считается готовым и на него начинает поступать трафик.


Пример:


readinessProbe:

exec:

command:

- cat

- /tmp/healthy

initialDelaySeconds: 5

periodSeconds: 5


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования