使用 Rancher 上的 configMap UI 打开/关闭活性探测

问题描述

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

详细说明: 假设 pod 上已经配置了 liveness 探针。接下来我有一个布尔标志,它被设置为 false,所以如果为 false,活性探针将停止对 pod 进行探测。其他时候,如果设置布尔标志为真,活性探测将恢复探测。所有这些都需要在不重新部署 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 探测器以保持 Pod 运行,即使 Pod 在技术上不健康。

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

  1. 因此,您移除了 Liveness 探针,这基本上可以让您的 Pod 在您的应用程序运行时一直运行。

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

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

当然,可以使用类似的方法来控制您的 Livness 探针端点,但用于保持 Pod 运行但减少流量的 K8s 机制由就绪探针负责。