0

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

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

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

更新:

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

4

3 回答 3

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
于 2019-11-29T23:26:10.493 回答
0

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

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

于 2017-03-25T07:24:37.720 回答
0

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

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

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

于 2017-03-24T23:03:30.623 回答