Проверяет ли работоспособность и готовность Kubernetes, запущен ли python?

#kubernetes #readinessprobe #livenessprobe

#kubernetes #проверка готовности #проверка работоспособности

Вопрос:

У меня простой вопрос, но я не могу найти правильный ответ.

У меня есть пара модулей, запускающих мои приложения на python в kubernetes. Я еще не реализовал работоспособность и готовность. Когда я разговаривал со своим руководителем, он сказал мне, что я должен создать работоспособность и готовность для проверки и перезапустить свои модули, когда это необходимо, и мне нужно было найти способ проверить работоспособность и готовность, если python также запущен, потому что он может застрять, и контейнер может показать, что этовсе в порядке.

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

Есть какие-либо подсказки о том, как я могу это сделать? Или хороший ответ, который может объяснить, что работоспособность и готовность проверяют, запущен ли python или нет.

Большое спасибо!

Комментарии:

1. Что вы имеете в виду, говоря «python также запущен, потому что он может застрять, и контейнер может показать, что все в порядке. ` ? О готовности и работоспособности в документации k8s есть хорошие примеры того, как ее настроить.

2. Я имею в виду, проверяет ли работоспособность, только если модуль запущен, или проверяет, запущен ли python тоже? Мой руководитель сказал мне, что в некоторых случаях python может застрять, и модуль, возможно, работает хорошо, а работоспособность не будет знать, запущен python или нет. Возможно ли это, или живучесть проверит python и мой модуль?

Ответ №1:

Готовность не перезапустит ваш модуль, это просто сделает ваш рабочий недоступным через балансировщик / службу балансировки нагрузки, работоспособность перезапустится, если условие не выполнено. Вам не нужно запускать liveness через конечную точку, вы можете убедиться, что она просто достижима:

         livenessProbe:
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 20
          successThreshold: 1
          tcpSocket:
            port: <port-number>
          timeoutSeconds: 5
  

Вы можете предоставить порт на работающем python worker и просто убедиться, что он доступен, в противном случае, подумайте логически о том, когда вы хотите перезапустить модуль? что вы подразумеваете под it could get stuck

Комментарии:

1. Я имею в виду, что работоспособность при перезапуске модуля зависит от того, застрянет ли он, верно? Мой руководитель сказал мне, что python, запущенный в контейнере, может застрять, и, возможно, модуль все еще может показывать работоспособность, что все в порядке.

2. Затем вам нужно добавить свой собственный логический инструментарий, который определяет «когда python застрял», т.Е. livenessProbe может быть чем-то другим, чем, tcpSocket например, http-запрос к конечной точке в вашем сервисе, где вы указываете логику, которую вы хотите в этой конечной точке, например: убедитесь, что выможет подключиться к БД, в противном случае сбой. Http: kubernetes.io/docs/tasks/configure-pod-container/… Вы exec command также найдете там.

3. Отлично! Спасибо за это!