针对mongodb的livenessprobe exec检查探针是在k8s 1.2.4下杀死pod

时间:2016-10-27 09:24:55

标签: mongodb kubernetes-health-check

我试图在K8s下运行的pod上实现livenessProbes。 只有非常简单的探针正在工作,参见示例:

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

我需要实施的探测是每50秒杀死一次。

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

当没有实现探测并且命令在pod内运行时,如果找到REMOVED字符串则返回1,如果找不到则返回0。

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

问题是,如何实现Container Exec Check等命令。

此致

1 个答案:

答案 0 :(得分:1)

您的命令将被引用而不是按您的意思运行,如果您想使用管道和其他更高级的shell功能,您可以使用/bin/sh,这也是您可以在官方文档中看到的解决方法。

所以你的探针看起来像这样:

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

您还可以使用-v开关来grep,以避免使用额外的test命令反转状态。