0

我正在寻找一种方法,我们可以在 Rancher 上使用 configMap UI 打开/关闭活跃度探测,同时它不需要重新部署 pod。

详细说明:假设已经在 pod 上配置了 liveness probe。接下来我有一个布尔标志,它被设置为 false,所以如果为 false,liveness probe 将停止对 pod 的探测。在其他时候,如果将布尔标志设置为 true,则 liveness probe 将恢复探测。所有这些都需要在不重新部署 pod 的情况下工作。以下是我的草稿想法:

  1. 有一个 configMap UI(在 Rancher 上列出的 configMap),它持有布尔标志来打开/关闭活性探测,如下所示:
app.liveness.probe.mode=false
  1. 接下来,我想通过条件检查将上述布尔标志吸收到 deployment.yaml 中,如下所示:
{{ if app.liveness.probe.mode }}
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 70
            periodSeconds: 10
{{ end }}
  1. 我不确定如何将 Rancher 上的 configMap 布尔标志引用到 deployment.yaml 文件中。
  2. 或者是否有任何其他方法可以在不重新部署 pod 的情况下控制 liveness probe 的开/关切换。
4

1 回答 1

0

听起来好像您想暂时关闭 Liveness 探测器以保持 Pod 运行,即使 Pod 在技术上并不健康。

您是否考虑过为此使用就绪探针?

  1. 因此,您删除了 Liveness 探针,这基本上让您的 Pod 只要您的应用程序正在运行就一直运行。

  2. 您定义一个在应用程序端点上执行 HTTP 检查的就绪探针。当该端点返回 200 时,您的 Pod 会接收流量。如果您想从 Pod 中移除流量,同时保持 Pod 运行,您的就绪探测必须返回错误代码 (>=400)。

  3. 要使用 ConfigMaps 动态完成此操作,您可以将 ConfigMap 作为卷挂载到应用程序容器中,将配置文件放到容器文件系统中。配置文件包含一个标志,如readninessProbe.active=true. 此文件由您的 Readiness 探测端点读取,并根据布尔值返回 200 或 500。

自然地,可以使用类似的方法来控制您的 Livness 探针端点,但是 K8s 保持 Pod 运行但从它们中取出流量的机制由 Readiness 探针负责。

于 2021-02-11T08:05:39.140 回答