1、初始化容器
1.1 用途
➢ Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码;
➢ Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低;
➢ Init容器可以以root身份运行,执行一些高权限命令;
➢ Init容器相关操作执行完成以后即退出,不会给业务容器带来安全隐患。
常用场景:在主应用启动之前,做一些初始化的操作,比如创建文件、修改内核参数、等待
依赖程序启动或其他需要在主程序启动之前需要做的工作
1.2 初始化容器和PostStart区别
- PostStart:依赖主应用的环境,而且并不一定先于Command运行
- InitContainer:不依赖主应用的环境,可以有更高的权限和更多的工具,一定会在主应用启动之前完成
1.3 初始化容器和普通容器的区别
Init 容器与普通的容器非常像,除了如下几点:
➢ 它们总是运行到完成;
➢ 上一个运行完成才会运行下一个;
➢ 如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止,但是Pod 对应的 restartPolicy 值为 Never,Kubernetes 不会 重新启动 Pod。
➢ Init 容器不支持 lifecycle、livenessProbe、 readinessProbe 和 startupProbe
1.4 初始化容器示例