此文为学习《Kubernetes权威指南》的相关笔记
学习笔记:
初始化容器Init Container(后称IC)用于在启动应用容器前进行初始化,完成应用容器所需的预置条件。
主要应用场景如:
- 等待其他关联组件正确运行(如数据库或后台某个服务)
- 基于环境变量或配置模板生成配置文件
- 从远程数据库获取本地所需配置,或者将自身注册到某个中央数据库中
- 下载相关依赖包,或者对系统进行一些预配置操作
作为初始化的工具, IC容器仅运行一次就结束,且不能设置readinessProbe探针,多个IC容器将依次执行,系统要求必需在所有IC执行成功后才能继续执行下一个容器。
在IC容器中也可以设置资源限制,但与应用容器存在如下不同:
- 如果多个IC容器都定义了资源请求/限制,则取最大值作为所有IC容器的资源请求值/限制值
- Pod的有效资源请求值/限制值则取(应用容器值之和/IC容器最大值)中的较大值
- Pod的有效资源请求值/限制值是调度算法、真实资源配额和cgroup设置真正使用的值,也就是说,IC容器可以为初始化操作预留系统资源
当Pod被重启时,IC容器将会重新执行,常见的Pod重启场景如下:
- IC容器被更新时,整个Pod将会重启(应用容器被更新时,只有该应用容器会被重启)
- Pod的infrustructure容器更新时,Pod将会被重启
- Pod中所有容器都终止,且RestartPolicy=Always,Pod将会被重启。