【问题标题】:How to trigger a Liveness Probe failure in kubernetes如何在 Kubernetes 中触发 Liveness Probe 失败
【发布时间】:2017-03-24 17:01:14
【问题描述】:

我的服务 deployment.yaml 中有以下活性探针

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

我想测试探针是否真的触发了 POD 重新部署,这是最容易让它失败的方法吗? 可能以编程方式。

更新:

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

【问题讨论】:

    标签: docker kubernetes probe kubernetes-health-check


    【解决方案1】:

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

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

    这完全取决于您的应用程序,kubernetes 只会按照您的指示去做。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • docker pause 命令不够好。我可以在 journalctl 中看到 Liveness probe 的失败,但是在容器没有取消暂停之前,新的 pod 不会启动。
      【解决方案3】:

      您可以如下定义您的活性探针

      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
      

      【讨论】:

        猜你喜欢
        • 2020-03-01
        • 1970-01-01
        • 2020-04-11
        • 2019-02-07
        • 1970-01-01
        • 1970-01-01
        • 2016-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多