Как мне проверить работоспособность моего го сервиса в Куберне?
Я управляю службой, написанной в го в стручке в Kubernetes. Служба не предоставляет интерфейс HTTP; это обработка работы из очереди.
Я мог бы:
- Используйте исполняемую проверку живучести, чтобы увидеть, запущен ли процесс
- Предоставить конечную точку проверки работоспособности HTTP
- Используйте expvars для предоставления основных данных о здоровье.
Есть ли общий / идиоматический способ сделать это в go/Kubernetes?
2 ответа
В общем, я рекомендую механизм HTTP, потому что его так легко добавить в Go. Если у вас уже есть exec
В состоянии команда, которая вернет полезный статус, пойти на это. Или вы можете рассмотреть https://github.com/kubernetes/contrib/tree/master/exec-healthz
Я не стану рассуждать об удобстве настройки процесса, запущенного в капсулу, чтобы сосредоточиться на вопросе.
Я бы не стал создавать другой процесс внутри контейнера для предоставления данных или изменения текущего процесса просто для предоставления конечной точки работоспособности, поэтому я бы выбрал способ проверки живучести exec. Он не попадает в ваше приложение и, надеюсь, он будет периодически потреблять только несколько циклов ЦП.
В любом случае, если вы решите предоставить информацию о состоянии здоровья из модуля, я буду использовать модуль с несколькими контейнерами, в котором приложение для проверки состояния здоровья будет использоваться в качестве коляски, а рабочий процесс - в другом контейнере.