|
|||||||
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
Запись: and-semakin/mytetra_data/master/base/15378572320qjfrwsl7o/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Компонент 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 |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|