0

以下是 livenessProbe 的当前配置:

   livenessProbe:
        httpGet:
          path: /heartbeat
          port: 8000
        initialDelaySeconds: 2
        timeoutSeconds: 2
        periodSeconds: 8
        failureThreshold: 2

但是 URL 的响应正文.well-known/heartbeat显示status: "DOWN"并且 http 返回状态为 200

因此,由于 http 响应状态为 200,Kubelet 不会重新启动容器


如何确保 Kubelet 读取响应正文而不是 http 返回状态?使用livenessProbe配置

4

2 回答 2

1

如何确保 Kubelet 读取响应正文而不是 http 返回状态?使用 livenessProbe 配置

这不符合 Kubernetes 提供的“合同”。您可能需要实现一个自定义端点,该端点遵循 HTTP 活性探测合同,如下所示。

来自定义 HTTP 活跃度探测

如果处理程序返回失败代码,kubelet 将杀死容器并重新启动它。

任何大于或等于 200 且小于 400 的代码都表示成功。任何其他代码都表示失败。

于 2021-10-14T18:52:19.507 回答
1

您可以使用 shell 命令解释探针中的主体,例如:

livenessProbe:
  exec:
    command:
    - sh
    - -c
    - curl -s localhost | grep 'status: "UP"'

grepstatus: "DOWN"如果这将导致 readinessProbe 失败,则返回非零。您当然可以根据您的实际响应正文调整脚本。

于 2021-10-15T07:51:45.017 回答