2016-10-27 3 views
0

Я пытаюсь реализовать livenessProbes на контейнерах, работающих под K8s. только очень простой датчик работает, смотрите пример:livenessprobe exec проверить зонд для mongodb убивает pod под k8s 1.2.4

livenessProbe: 
     exec: 
     command: 
     - cat 
     - /etc/services 
     initialDelaySeconds: 45 
     timeoutSeconds: 5 

Probe Мне нужно реализовать убивает стручок, каждый 50sec.

livenessProbe: 
     exec: 
     command: 
      mongo --port 27018 --eval "rs.status()" | grep "REMOVED" ; test $? -eq 1 
     initialDelaySeconds: 45 
     timeoutSeconds: 5 

Когда зонд не реализован и запускаемой внутри стручка она возвращается 1, если REMOVED строка найдена и 0, если не нашли в соответствии с требованиями.

[root @ eas-mongo-rs-3-ui81p /] # mongo --port 27018 --eval "rs.status()" | grep "REMOVED"; тест $? -eq 1

Вопрос в том, как реализовать такую ​​команду, как Container Exec Check.

С уважением

ответ

0

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

Так что ваш зонд будет выглядеть примерно так:

livenessProbe: 
    exec: 
    command: 
     - /bin/sh 
     - -c 
     - mongo --port 27018 --eval "rs.status()" | grep -vq "REMOVED" 
    initialDelaySeconds: 45 
    timeoutSeconds: 5 

Вы также можете использовать переключатель -v в Grep, чтобы избежать реверсивный статуса с этой дополнительной test команды.