0

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

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

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

    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 "已移除" ; 测试$?-当量 1

问题是,如何实现 Container Exec Check 这样的命令。

问候

4

1 回答 1

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命令反转状态。

于 2017-02-01T20:09:31.580 回答