第 21 章 监控容器


使用 Podman 命令来管理 Podman 环境。通过这种方式,您可以通过显示系统和 pod 信息来确定容器的健康状况,并监控 Podman 事件。

21.1. 对容器使用健康检查

您可以使用健康检查来确定运行在容器中的进程的健康状态或就绪状态。

如果健康检查成功,容器将标记为 "healthy";否则,其标记为"unhealthy"。您可以通过运行 podman exec 命令来比较健康检查,并检查退出代码。零退出值表示容器为 "healthy"。

Containerfile 中使用 HEALTHCHECK 指令构建镜像或在命令行上创建容器时,可以设置健康检查。您可以使用 podman inspectpodman ps 命令显示容器的健康检查状态。

健康检查由六个基本组件组成:

  • Command(命令)
  • Retries(重试)
  • Interval(间隔)
  • Start-period(开始期间)
  • Timeout(超时)
  • 容器恢复

健康检查组件的描述如下:

命令(--health-cmd 选项)
Podman 在目标容器内执行命令并等待退出代码。

其他五个组件与健康检查的调度相关,它们是可选的。

Retries (--health-retries 选项)
在容器被标记为"unhealthy"前,定义需要发生的连续失败的健康检查的数量。一个成功的健康检查会重置重试计数器。
Interval (--health-interval 选项)
描述运行健康检查命令之间的时间。请注意,小的间隔会导致系统花费大量时间运行健康检查。间隔时间太长会导致难以捕捉超时。
Start-period (--health-start-period 选项)
描述容器启动和要忽略健康检查失败之间的时间。
Timeout (--health-timeout 选项)
描述健康检查在被视为不成功之前必须完成的时间段。
注意

Retries、Interval 和 Start-period 组件的值是持续时间,如 "30s" 或 "1h15m"。有效的时间单位是"ns"、"us"或"µs","ms","s"、"m"和"h"。

Container recovery(--health-on-failure 选项)

决定在容器状态为不健康时要执行哪些操作。当应用程序失败时,Podman 会自动重启它以提供稳健性。--health-on-failure 选项支持四个操作:

  • none :不执行任何操作,这是默认操作。
  • kill :杀掉容器。
  • restart :重启容器。
  • stop:停止容器。

    注意

    Podman 版本 4.2 及更高版本中提供 --health-on-failure 选项。

警告

不要将 restart 操作与 --restart 选项组合。在 systemd 单元内运行时,请考虑使用 killstop 操作来使用 systemd 重启策略。

健康检查在容器内运行。只有在您知道服务的健康状态是什么,并能够区分成功的和不成功的健康检查时,健康检查才有意义。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.