问题描述
我正在寻找一种方法,我们可以在 Rancher 上使用 configMap UI 打开/关闭活性探测,同时它不需要重新部署 pod。
详细说明: 假设 pod 上已经配置了 liveness 探针。接下来我有一个布尔标志,它被设置为 false,所以如果为 false,活性探针将停止对 pod 进行探测。其他时候,如果设置布尔标志为真,活性探测将恢复探测。所有这些都需要在不重新部署 pod 的情况下工作。以下是我的草稿想法:
app.liveness.probe.mode=false
- 接下来,我想通过如下条件检查将上述布尔标志吸收到 deployment.yaml 中:
{{ if app.liveness.probe.mode }}
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 70
periodSeconds: 10
{{ end }}
解决方法
听起来好像您想暂时关闭 Liveness 探测器以保持 Pod 运行,即使 Pod 在技术上不健康。
您是否考虑过为此使用就绪探针?
-
因此,您移除了 Liveness 探针,这基本上可以让您的 Pod 在您的应用程序运行时一直运行。
-
您定义一个 Readiness 探针,用于在应用程序端点上执行 HTTP 检查。当该端点返回 200 时,您的 Pod 会收到流量。如果您想减少 Pod 的流量,同时保持 Pod 运行,您的就绪探测器必须返回错误代码 (>=400)。
-
要使用 ConfigMaps 动态完成此操作,您可以将 ConfigMap 作为卷挂载到应用程序容器中,将配置文件放入容器文件系统。配置文件包含一个类似
readninessProbe.active=true
的标志。此文件由您的 Readiness 探针端点读取,并根据布尔值返回 200 或 500。
当然,可以使用类似的方法来控制您的 Livness 探针端点,但用于保持 Pod 运行但减少流量的 K8s 机制由就绪探针负责。