Как вызвать сбой зонда живучести в кубернетах

У меня есть следующий тест живучести в моем развертывании службы. Yaml

      livenessProbe:
        failureThreshold: 3
        httpGet:
          path: /health
          port: 9081
          scheme: HTTP
        initialDelaySeconds: 180
        timeoutSeconds: 10
        periodSeconds: 10
        successThreshold: 1

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

Обновлять:

Чтобы лучше прояснить вопрос, я не хочу ни изменять код в приложении, ни приостанавливать работающий контейнер. Мне было интересно, можно ли каким-то образом заблокировать конечную точку / порт во время выполнения, возможно, с помощью команды kubernetes или docker.


person carlomas    schedule 24.03.2017    source источник


Ответы (3)


Если у вас есть возможность изменить код базового приложения, просто измените конечную точку /health, чтобы она возвращала что-то большее, чем код состояния HTTP 400.

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

Это полностью зависит от вашего приложения, и kubernetes просто сделает то, что вы ему скажете.

person jaxxstorm    schedule 24.03.2017

Если вы можете добраться до хоста, на котором работает модуль, выполнение docker pause в контейнере приостановит все процессы в контейнере, что должно привести к сбою зондов живучести.

Примечание: я сам не пробовал, но на основе документации docker pause здесь, это так звучит.

person Buchi    schedule 25.03.2017
comment
Команды docker pause недостаточно. Я вижу сбои проверки живучести в journalctl, но новый модуль не запускается, пока контейнер не будет снят с паузы. - person carlomas; 27.03.2017

Вы можете определить свой зонд жизнеспособности следующим образом

livenessProbe:
  exec:
    command:
      - /bin/bash
      - '-c'
      - /liveness-probe.sh
  initialDelaySeconds: 10
  periodSeconds: 60

И создайте файл sh в корневом пути с именем

liveness-probe.sh

который содержит

#!/bin/bash
#exit 0 #Does not fail and does not trigger a pod restart
exit 1 #Triggers pod restart
person Yael    schedule 29.11.2019