Как мне проверить работоспособность моего го сервиса в Куберне?

Я управляю службой, написанной в го в стручке в Kubernetes. Служба не предоставляет интерфейс HTTP; это обработка работы из очереди.

Я мог бы:

  • Используйте исполняемую проверку живучести, чтобы увидеть, запущен ли процесс
  • Предоставить конечную точку проверки работоспособности HTTP
  • Используйте expvars для предоставления основных данных о здоровье.

Есть ли общий / идиоматический способ сделать это в go/Kubernetes?

2 ответа

Решение

В общем, я рекомендую механизм HTTP, потому что его так легко добавить в Go. Если у вас уже есть execВ состоянии команда, которая вернет полезный статус, пойти на это. Или вы можете рассмотреть https://github.com/kubernetes/contrib/tree/master/exec-healthz

Я не стану рассуждать об удобстве настройки процесса, запущенного в капсулу, чтобы сосредоточиться на вопросе.

Я бы не стал создавать другой процесс внутри контейнера для предоставления данных или изменения текущего процесса просто для предоставления конечной точки работоспособности, поэтому я бы выбрал способ проверки живучести exec. Он не попадает в ваше приложение и, надеюсь, он будет периодически потреблять только несколько циклов ЦП.

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

Другие вопросы по тегам