kubernetes实践之三十九:Pod初始化容器之Init Container

一:前言
在很多应用场景中,应用在启动之前都需要进行如下初始化操作
1. 等待其他关联组件正确运行(例如数据库
2.基于环境变量或配置模版生成配置文件
3.从远程数据库获取本地所需配置,或者将自身注册到某个中央数据库中
4.下载相关依赖包,或者对系统进行一些配置操作

Init container与应用容器本质上是一样的,但他们是仅运行一次就结束的任务,并且必须在成功执行完成后,系统才能继续执行下一个容器。

二:实例
nginx-init-containers.yaml

点击(此处)折叠或打开

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.     name: nginx
  5. spec:
  6.    initContainers:
  7.    - name: install
  8.      image: busybox
  9.      command:
  10.      - wget
  11.      - "-O"
  12.      - "/work-dir/index.html"
  13.      - http://kubernetes.io
  14.      volumeMounts:
  15.      - name: workdir
  16.         mountPath: "/work-dir"
  17.    containers:
  18.    - name: nginx
  19.       image: nginx
  20.       ports:
  21.       - containerPort: 80
  22.       volumeMounts:
  23.       - name: workdir
  24.          mountPath: /usr/share/nginx/html
  25.    volumes:
  26.    - name: workdir
  27.       emptyDir: {}
kubectl create -f   nginx-init-containers.yaml
kubernetes实践之三十九:Pod初始化容器之Init Container_第1张图片
kubectl describe pod nginx
kubernetes实践之三十九:Pod初始化容器之Init Container_第2张图片

三:说明
init container与应用容器的区别
1.运行方式不同,它们必须先于应用容器执行完成,当设置了多个init co ntainer时,将按顺序逐个运行,当所有init container都成功运行后,kubernetes才会初始化Pod的各种信息。

2.在init container的定义中也可以设置资源限制,volume的使用和安全策略,但与应用容器略有不同

3.init container不能设置readinessProbe探针,因为必须在它们成功运行后才能继续运行Pod中定义的普通容器

4.在Pod重新启动时,init container将会重新运行

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2154415/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28624388/viewspace-2154415/

你可能感兴趣的:(kubernetes实践之三十九:Pod初始化容器之Init Container)