learning/k8s-intermediate/workload/init-container.md
参考文档: Kubernetes Init Containers
<AdSenseTitle/>Pod 可以包含多个工作容器,也可以包含一个或多个初始化容器,初始化容器在工作容器启动之前执行。
初始化容器与工作容器完全相同,除了如下几点:
初始化容器可以指定不同于工作容器的镜像,这使得初始化容器相较于直接在工作容器中编写启动相关的代码更有优势:
下面是一些使用初始化容器的例子:
使用一行 shell 命令,等待某一个 Service 启动后再启动工作容器
for i in {1..100}; do sleep 1; if dig myservice; then exit 0; fi; done; exit 1
使用 Pod 的信息将其注册到某一个远程服务:
curl -X POST http://$MANAGEMENT_SERVICE_HOST:$MANAGEMENT_SERVICE_PORT/register -d 'instance=$(<POD_NAME>)&ip=$(<POD_IP>)'
等候一定时间再启动工作容器
sleep 60
将 Git repository 克隆到一个数据卷
根据某些参数,运行一个模板工具动态生成工作容器所需要的配置文件
Kuboard 工作负载编辑器中支持定义初始化容器,如下图所示,左下角可 添加初始化容器 初始化容器按照添加的顺序显示在容器组中,且始终显示在工作容器的前面。
initializing status 为 True 的 Condition在确定初始化容器的执行顺序以后,以下 resource 使用规则将适用:
Pod 重启时,所有的初始化容器都会重新执行,Pod 重启的原因可能有: