Проверка готовности/живучести Kubernetes в консольном приложении

У меня есть консольное приложение в ядре .net. Как внедрить проверку готовности/живучести Kubernetes?

Мое приложение обрабатывает сообщения rabbitmq в цикле и не слушает никаких http-портов.


person RouR    schedule 17.12.2017    source источник


Ответы (3)


В этом случае может быть лучше создать sidecar-контейнер в том же модуле. В этом контейнере будет размещаться сайт ASP.NET Core, специально предназначенный для использования нового API проверки работоспособности, недавно представленного в .NET Core 2.2. Существуют расширения для мониторинга подключения rabbitmq. Затем вы должны открыть веб-сайт ASP.NET Core для проверки работоспособности.

ASP.NET Core Мониторинг состояния

AspNetCore.HealthChecks.Rabbitmq

person rifferte    schedule 06.05.2019

Проверка готовности не имеет смысла для этого сценария, поскольку вы не будете направлять трафик через Сервис. Поскольку ваше приложение самостоятельно считывает rabbitmq, оно будет делать это независимо от зондов kube. Однако есть логика в использовании проверки живучести, когда вы можете перезапустить контейнер, если процесс внутри каким-то образом потерпел неудачу.

Вы можете либо создать конечную точку API состояния, которая будет прослушивать HTTP-запросы на каком-либо порту и отвечать 200 OK, если ваше приложение работоспособно (вам нужна некоторая логика внутри, чтобы определить, что означает работоспособность), либо использовать зонд на основе команд для запуска команды, которая будет сделайте некоторую проверку и сообщите, в порядке ли контейнер или нет.

person Radek 'Goblin' Pieczonka    schedule 17.12.2017

Вот несколько хороших решений для добавления проверки работоспособности в приложение, отличное от asp (например, в консольное приложение):

Выполнение проверки работоспособности в .NET Core Worker Service

Я бы предложил реализовать решение TCP, так как оно минимально, но все же дает ожидаемый результат.

person Yair Maron    schedule 04.06.2021