下面是liveessprobe的当前配置:
livenessProbe:
httpGet:
path: /heartbeat
port: 8000
initialDelaySeconds: 2
timeoutSeconds: 2
periodSeconds: 8
failureThreshold: 2
但是URL.well-known/heartbeat
的响应体显示为status: "DOWN"
, http返回状态为200
所以,Kubelet不会重新启动容器,因为http响应状态为200
如何确保Kubelet读取响应体而不是http返回状态?usinglivenessProbe
configuration
您可以使用shell命令在探针中解释body,例如:
livenessProbe:
exec:
command:
- sh
- -c
- curl -s localhost | grep 'status: "UP"'
grep
返回非零,如果status: "DOWN"
,将导致readinessProbe失败。当然,您可以根据实际的响应体调整脚本。
如何确保Kubelet读取响应体而不是http返回状态?使用liveessprobe配置
这不是根据"合同"。由Kubernetes提供。您可能需要实现一个自定义端点,该端点遵循HTTP活动探测的契约,如下所示。
From Define a HTTP live probe
如果处理程序返回一个失败代码,kubelet将终止容器并重新启动它。
大于等于200且小于400表示成功。任何其他代码表示失败。