• 博客访问: 806953
  • 博文数量: 239
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-05 14:37
  • 认证徽章:
个人简介

走路 行心 修缘(需要交流的请加我的QQ 273936024)

文章分类

全部博文(239)

文章存档

2018年(49)

2017年(63)

2016年(39)

2015年(20)

2014年(29)

2013年(39)

分类: Docker/K8

2018-05-13 16:50:54

一:前言
在很多应用场景中,应用在启动之前都需要进行如下初始化操作
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将会重新运行
阅读(87) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册