ITPub博客

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

原创 Docker/K8 作者:百联达 时间:2018-05-13 16:50:54 0 删除 编辑
一:前言
在很多应用场景中,应用在启动之前都需要进行如下初始化操作
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

kubectl describe pod nginx


三:说明
init container与应用容器的区别
1.运行方式不同,它们必须先于应用容器执行完成,当设置了多个init container时,将按顺序逐个运行,当所有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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-02-05

  • 博文量
    285
  • 访问量
    894204