如何在kubernetes中触发Liveness Probe失败

时间:2017-03-24 17:01:14

标签: docker kubernetes probe kubernetes-health-check

我的服务部署中有以下活动探测.yaml

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

我想测试探针是否实际上触发了POD重新部署,这是让它失败的最简单方法吗? 可能是以程序化的方式。

更新

最好澄清一下这个问题,我不想更改应用程序中的代码,也不想暂停正在运行的容器。 我想知道是否有可能在运行时使用kubernetes或docker命令阻塞端点/端口。

3 个答案:

答案 0 :(得分:0)

如果您能够更改底层应用程序代码,只需更改/health端点,使其返回高于400 http状态代码的内容。

如果没有,您必须以某种方式使应用程序失败,可能是使用kubectl exec登录到pod并进行影响应用程序运行状况的更改。

这完全取决于您的应用程序,kubernetes将完成您告诉它的操作。

答案 1 :(得分:0)

如果你可以到达运行pod的主机,在容器上执行docker pause将暂停容器中的所有进程,这将使活动探测失败。

注意:我自己没有尝试过,但根据docker pause here的文档,听起来就是这样。

答案 2 :(得分:0)

您可以按照以下方式定义活动性探针

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