Kubernetes: проверка готовности с помощью httpGet
Я очень смущен зондом готовности. Предположим, я использую httpGet с /health в качестве конечной точки зондирования. Как только проверка готовности вернет 500, сервер перестанет обслуживать трафик. Тогда как может работать конечная точка /health? Другими словами, если проверка готовности не удалась, как она может снова работать, если она больше не может отвечать на будущие проверки / проверки работоспособности?
Полагаю, одно правильное объяснение заключается в том, что путь вызывается локально? (т.е. не через https:${ip and port}/health)
1 ответ
У вас опечатка.. вы сказали:
Как только проверка готовности вернет 500, сервер перестанет обслуживать трафик.
Однако должно быть:
Как только проверка готовности вернет 500, служба k8s прекратит обслуживание трафика.
Сервис k8s ведет себя как балансировщик нагрузки для нескольких модулей.
- Если модуль готов, конечная точка будет создана для готового модуля, и трафик будет получен.
- Если модуль не готов, его конечная точка будет удалена, и он больше не будет получать трафик.
Пока Readiness Probe решает перенаправлять трафик или нет, Liveness Probe решает перезапускать Pod или нет.
Если вы хотите избавиться от нездорового стручка, вы должны также указать Liveness Probe.
Итак, подведем итоги:
Чтобы получить полное развертывание высокой доступности, вам понадобятся 3 вещи вместе:
- Pod управляется Deployment, которое будет поддерживать несколько реплик.
- Liveness Probe поможет удалить / перезапустить модуль unlheathy. Через некоторое время ( 6 перезапусков) модуль перестанет работать, и развертывание позаботится о том, чтобы доставить новый.
- Зонд готовности поможет перенаправить трафик только к готовым модулям: либо в начале выполнения, либо в конце выполнения (плавное завершение работы).