overview
pod就绪前的初始化步骤
use cases
- 把有安全级别的程序放在pod 的init container中,放在images中会暴露
- 减少制作镜像的过程,如果是简单的setup过程,可以通过sed,awk等命令完成
- 应用镜像开发者和部署者工作分离
特征
- 多个init container顺序执行,如果失败根据restart policy,进行下一步操作。
- 如果是RestartNever,pod将处于fail状态
- 非RestartNever, pod 会等到init container执行成功,或者等待用户删除
- effective resource quota 选取以下较高值:
- max init container resource quota
- sum of all app container resource usage
使用
kubernetes v1.50 情况下属于beta功能, vi nginx-init-containers.yaml(pod.beta.kubernetes.io/init-containers: 的value的字符串内容必须是json格式):
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
pod.beta.kubernetes.io/init-containers: '[
{
"name": "install",
"image": "busybox",
"command": ["wget", "-O", "/work-dir/index.html", "http://kubernetes.io/index.html"],
"volumeMounts": [
{
"name": "workdir",
"mountPath": "/work-dir"
}
]
}
]'
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: workdir
mountPath: /usr/share/nginx/html
dnsPolicy: Default
volumes:
- name: workdir
emptyDir: {}
init container status
结果保存在annotation:pod.beta.kubernetes.io/init-container-statuses