第 21 章 监控容器
使用 Podman 命令管理 Podman 环境。通过这种方式,您可以通过显示系统和 pod 信息,以及监控 Podman 事件来确定容器的健康状况。
21.1. 在容器上使用健康检查
您可以使用健康检查来确定容器中运行的进程的健康状态或就绪状态。
如果健康检查成功,容器将标记为 "healthy";否则,其状态为"unhealthy"。您可以将健康检查与运行 podman exec
命令进行比较,并检查退出代码。零退出值表示容器为 "healthy"。
在使用 Containerfile
中的 HEALTHCHECK
指令或在命令行中创建容器时,可以设置健康检查。您可以使用 podman inspect
或 podman ps
命令显示容器的 health-check 状态。
健康检查由六个基本组件组成:
- Command(命令)
- Retries(重试)
- Interval(间隔)
- Start-period(开始期间)
- Timeout(超时)
- 容器恢复
健康检查组件的描述如下:
- 命令 (
--health-cmd
选项) - Podman 在目标容器内执行命令并等待退出代码。
其他五个组件与健康检查的调度相关,它们是可选的。
- 重试 (
--health-retries
选项) - 定义容器被标记为"unhealthy"前需要连续失败的健康检查数量。成功健康检查会重置重试计数器。
- 间隔 (
--health-interval
选项) - 描述运行 healthcheck 命令之间的时间。请注意:小的间隔会导致系统花费很多时间运行健康检查。间隔时间太长会导致难以捕捉超时。
- start-period (
--health-start-period
选项) - 描述容器启动和要忽略健康检查失败的时间间隔。
- 超时 (
--health-timeout
选项) - 描述健康检查在被视为不成功前必须完成的时间。
Retries、Interval 和 Start-period 组件的值是持续时间,如 "30s" 或 "1h15m"。有效的时间单位是"ns"、"us"或"ãs","ms","s"、"m"和"h"。
- 容器恢复 (
--health-on-failure
选项) 决定在容器状态不健康时要执行的操作。当应用程序失败时,Podman 会自动重启它以提供稳健性。
--health-on-failure
选项支持四个操作:-
none
:不执行任何操作,这是默认操作。 -
kill
:终止容器。 -
restart
:重启容器。 stop
:停止容器。注意Podman 版本 4.2 及更高版本中提供了
--health-on-failure
选项。
-
不要将 restart
操作与 --restart
选项一起使用。在 systemd
单元内运行时,请考虑使用 kill
或 stop
操作来使用 systemd
重启策略。
健康检查在容器内运行。只有在您知道该服务的健康状态,并可以区分成功和不成功健康检查时,健康检查才有意义。
其他资源
-
系统中的
podman-healthcheck
和podman-run
man page - 位于边缘处的 podman :使用自定义的健康检查操作来保持服务正常运行
- 使用 Podman 监控容器严重性和可用性