一、背景
- 容器及其周围的生态系统改变了工程师部署、维护和排查工作负载故障的方式。但是,在 Kubernetes 集群上调试应用程序有时可能会很困难,因为可能在容器中找不到所需的调试工具。许多工程师使用基于精简、发行版构建无发行版的基础镜像,其中甚至没有包管理器或shell,甚至一些团队使用 scratch 作为基础镜像,并且只添加应用程序运行所需的文件。
- 这种常见做法的一些原因是:
-
- 具有较小的攻击区域。
-
- 为了获得更快的扫描性能。
-
- 减小了镜像大小。
-
- 为了有更快的构建和更短 CD/CI 周期。
-
- 减少依赖关系。
- 这些精简的基础镜像不包括用于对应用程序或其依赖项进行故障排查的工具,这是 Kubernetes 临时容器功能最大用途。临时容器允许创建包含可能需要的所有调试工具的容器镜像。一旦需要调试,就可以将临时容器部署到所选的正在运行的 Pod 中。
- 不能将容器添加到已部署的容器,需要更新 spec,并重新创建资源。但是,可以将临时容器添加到现有 Pod 中,以便对线上问题进行故障排查。
二、 临时容器的配置
- 临