短暂容器
功能状态:
Kubernetes v1.25 [稳定]
本页概述了临时的容器:一种特殊类型的容器,它在现有的 Pod 中临时运行,以完成用户发起的操作,例如故障排除。使用临时的容器来检查服务,而不是构建应用程序。
了解临时的容器
Pod 是 Kubernetes 应用程序的基本构建块。由于 Pod 旨在是可丢弃和可替换的,因此您无法在 Pod 创建后向其添加容器。相反,您通常使用 部署 以受控方式删除和替换 Pod。
但是,有时需要检查现有 Pod 的状态,例如,为了排查难以重现的错误。在这些情况下,您可以在现有 Pod 中运行临时的容器以检查其状态并运行任意命令。
什么是临时的容器?
临时的容器与其他容器的不同之处在于它们不保证资源或执行,并且永远不会自动重启,因此不适合构建应用程序。临时的容器使用与普通容器相同的 ContainerSpec
进行描述,但是许多字段不兼容并且不允许用于临时的容器。
- 临时的容器可能没有端口,因此,
ports
、livenessProbe
、readinessProbe
等字段不允许使用。 - Pod 资源分配是不可变的,因此不允许设置
resources
。 - 有关允许字段的完整列表,请参阅 临时的容器参考文档。
临时的容器是使用 API 中的特殊 ephemeralcontainers
处理程序创建的,而不是直接将它们添加到 pod.spec
中,因此无法使用 kubectl edit
添加临时的容器。
与普通容器一样,您也不允许在将临时的容器添加到 Pod 后对其进行更改或删除。
注意
临时的容器不受 静态 Pod 的支持。临时的容器的用途
当 kubectl exec
不够用时,临时的容器对于交互式故障排除非常有用,因为容器已崩溃或容器镜像不包含调试实用程序。
特别是,无发行版镜像 使您能够部署最小化的容器镜像,这些镜像可以减少攻击面,并减少对错误和漏洞的暴露。由于无发行版镜像不包含 shell 或任何调试实用程序,因此仅使用 kubectl exec
很难对无发行版镜像进行故障排除。
使用临时的容器时,建议启用 进程命名空间共享,以便您能够查看其他容器中的进程。
下一步
- 了解如何使用临时的容器 调试 Pod。
上次修改时间:2024 年 1 月 18 日,太平洋标准时间下午 8:01:改进 Pod 文档 (2b4b4b4e66)