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