InitContainer
InitContainer
初始化容器
在Pod中,容器是共享存储资源和网络资源的,所以Init Container容器产生的数据是可以被其他容器作用到的。初始化容器有点类似于postStart 钩子的作用,在Pod没有启动之前,为应用容器做一些准备工作,但是跟钩子的启动处于不同的阶段,在Pod生命周期图中可以明显看出。Pod中可以启动一个或多个容器,也可以有一个或多个initContainer 容器。
initContainer 容器和普通容器几乎一样,除了一下两点:
- 总是运行到完成
- 必须在Pod启动下一个容器之前运行完成
如果init容器启动失败,容器根据restartPolicy策略重启,如果有多个,它们会按顺序,一次执行一个,每个init容器都必须运行成功了才会运行下一个。init容器不支持readnessProbe,因为它们必须在Pod就绪前运行完成。
initContainer能做什么?
- 等他其他容器Ready: 比如web服务器需要等待mysql数据库服务器启动完成,可以启动一个initContainer 容器检测mysql服务启动,成功后退出,运行主容器
- 环境构建:为主容器运行提供配置和初始化等操作。
- 可以包含运行使用工具:处于安全考虑,在镜像中是不建议包含这些工具的。
- 构建工具和代码:在镜像中没有,而服务需要用到的工具可以用init Container构建
- 构建和部署分离: 不需要重新将两步打包成一个镜像
- 提供一种阻塞容器启动的方式:必须在initContainer容器启动成功后,才会运行下一个容器,保证了一组条件运行成功的方式
示例
apiVersino: v1
kind: Pod
metadata:
name: myapp
spec:
initContainers:
- name: init-server
image: busybox
command: ["/bin/bash","-c","chown -R apache:apache /var/www"]
volumeMount:
- name: wwwroot
mountPath: /var/www
containers:
- name: my-service
image: httpd
containerPort:
- name: http
port: 80
protocol: TCP
volumeMount:
- name: wwwroot
mountPath: /var/www
volumes:
- name: wwwroot
hostPath:
path: /home/wwwroot
可以通过init Container修改主容器应用中的共享存储文件权限,让/var/www 路径成为apache用户和组拥有。这是我们利用initContainer起到的作用之一。
官方文档示例
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
InitContainer的更多相关文章
- 一个简单的ASP.NET MVC异常处理模块
一.前言 异常处理是每个系统必不可少的一个重要部分,它可以让我们的程序在发生错误时友好地提示.记录错误信息,更重要的是不破坏正常的数据和影响系统运行.异常处理应该是一个横切点,所谓横切点就是各个部分都 ...
- javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)
类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. ...
- HTML5 canvas处理图片的各种效果,包括放大缩小涂鸦等
http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201502151385.html jQuery 缩放 旋转 裁剪图片 Image Cropper ...
- [ActionScript 3.0] 图片左右循环移动
有时候多张图片展示需求中,需要左右循环移动展示,为了以后省时间思考,写个例子: import com.tweener.transitions.Tweener; import flash.display ...
- 自定义select控件开发
目的:select下拉框条目太多(上百),当用户选择具体项时会浪费用户很多时间去寻找,因此需要一个搜索框让用户输入关键字来匹配列表,便于用户选择 示例图: 1.html结构 <div class ...
- .net mvc onexception capture; redirectresult;
need to set filtercontext.result=new redirectresult('linkcustompage'); done. so... ASP.NET MVC异常处理模块 ...
- viewer.js图片查看器插件(可缩放/旋转/切换)
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 图书管理之HTML5压缩旋转裁剪图片总结
整体思路 : 在移动端压缩图片并且上传主要用到filereader.canvas 以及 formdata 这三个h5的api.逻辑并不难.整个过程就是: (1)用户使用input file上传图片的 ...
- 【反射】——Autofac 类型注册
Autofac是.net界一款轻量化的IOC组件,使用Autofac可以帮助完成代码中很多依赖注入工作.在以前文章中,介绍过Autofac的配置过程(http://www.cnblogs.com/Jn ...
随机推荐
- hackbar简单安装使用教程
安装hackbar: 在火狐的附加组件中搜索“hackbar”,将它添加到火狐浏览器中, 重启后Firefox后安装完成,按F9键打开我们就会看到在地址栏下面会出现一个大框框就是hackbar了 框框 ...
- 恋恋山城 Jean de Florette (1986) 男人的野心 / 弗洛莱特的若望 / 让·德·弗罗莱特 / 水源 下一部 甘泉,玛侬
<让·德·弗洛莱特>电影剧本 文/[法]马赛尔·巴涅尔译/苏原 编者按:<让·德·弗洛莱特>和<甘泉,玛侬>是根据法国著名作家马赛尔·巴涅尔的同名小说改编的电影.马 ...
- Kubernetes 使用 Weave Scope 监控集群(十七)
目录 一.安装 二.使用 Scope 2.1.拓扑结构 2.2.在线操作 2.3.强大的搜索功能 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所 ...
- 以A表中的值快速更新B表中记录的方法
1.问题描述 有两张表,A表记录了某些实体的新属性,B表记录了每个实体的旧属性,现在打算用A中的属性值去更新B中相同实体的旧属性,如下图所示: 类似这样的需求,怎样做比较高效呢? 2.制作模拟数据 ...
- PAT 1098
1098 Insertion or Heap Sort (25 分) According to Wikipedia: Insertion sort iterates, consuming one ...
- Graph machine learning 工具
OGB: Open Graph Benchmark https://ogb.stanford.edu/ https://github.com/snap-stanford/ogb OGB is a co ...
- LINGO与EXCEL之间的数据传递
前言 LINGO 作为非线性规划运算的专用软件,得出结果一般都是纯文本的一列数据,要想将数据呈现到论文当中,需要整理到 EXCEL 中,使用复制粘贴容易出错还费时,所以必须要动用函数来提高效率! 案例 ...
- python学习-33 max和min函数的高级使用
1.简单比较 age_dic={'age1456':15,'age2':16,'xiaohong_age':12,'xiaoming_age4':18,'age5':10} print(max(age ...
- 《Effective Objective-C》概念篇
1.运行时 OC 语言由 Smalltalk(20世纪70年代出现的一种面向对象的语言) 演化而来,后者是消息型语言的鼻祖. OC 使用动态绑定的消息结构,在运行时检查对象类型. 使用消息结构的语言, ...
- golang ---JSON-ITERATOR 使用
jsoniter ( json-iterator )是一款快且灵活的 JSON 解析器 Jsoniter 是最快的 JSON 解析器.它最多能比普通的解析器快 10 倍之多, 独特的 iterator ...