我有一个订阅服务队列的工作 pod。我们需要定义 liveness probe 来监控 worker 的健康。worker pod 不公开任何 HTTP 或 TCP 端口。所以我使用命令来检查工人的健康状况。像这样。
livenessProbe:
exec:
command:
- cat
- log/healthy-2020-07-16-03.log
每 5 秒,worker pod 会将健康信息输出到日志文件。日志文件名格式为healthy-YYYY-MM-DD-HH.log。每个日志信息如下:
{"message":"Thu Jul 16 2020 03:23:30 GMT+0000 (Coordinated Universal Time) health","level":"notice","Env":"local","Service":"myservice","timestamp":"2020-07-16T03:23:30.008Z"}
所以我需要检查日志时间戳和消息是否健康。
我的问题是:
- 我的方法是否遵循 k8s 健康探测的最佳实践?
- k8s 是否支持更强大的命令?例如:python 脚本或 jq。我需要解析 JSON 并验证时间戳和消息?
- 对于worker pod,我们不需要定义readiness probe,因为它不绑定k8s service或者endpoint,对吧?