一、InitContainer概述
### --- InitContainer概述~~~     # InitContainer:
~~~     初始化容器:预处理、预判断、与执行命令操作;在我应用容器启动之前做的一些舒适化操作。
~~~     # postStart:
~~~     在容器启动之前做一些操作。不能保证在你的container的EntryPoint

### --- 为什么不适用postStart而是使用InitContainer呢?~~~     两者都是在容器启动之前执行一些操作
~~~     使用InitContainer的原因:因为postStart不能保证在EntryPoint之前在运行,
~~~     但是InitContainer可以保证一定会在容器启动之前去运行,
~~~     因为它运行完成之后,才能运行我们的应用容器。

二、InitContainer预处理
### --- InitContainer预处理操作:~~~     验证在初始化之前进行执行InitContainer的参数,若是InitContainer执行成功,在执行启动。

### --- 添加InitContainers参数在容器启动之前执行一些操作[root@k8s-master01 ~]# kubectl edit deploy demo-nginxspec:                       # 在spec之下添加如下内容initContainers:- image: nginximagePullPolicy: IfNotPresentcommand: ["sh", "-c", "echo InitContainer"]name: init1containers:               # 在containers之上添加如上内容

### --- 查看容器是否被初始化操作
~~~     # 正在进行初始化操作[root@k8s-master01 ~]# kubectl get po -owide
NAME                          READY   STATUS        RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
demo-nginx-7d5fb74f4-splmz    0/2     Init:0/1      0          5s     <none>           k8s-node02     <none>           <none>
demo-nginx-7d5fb74f4-tn7xk    0/2     Init:0/1      0          6s     <none>           k8s-master01   <none>           <none>

~~~     # 初始化完成[root@k8s-master01 ~]# kubectl get po -owide
NAME                          READY   STATUS        RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
demo-nginx-7d5fb74f4-splmz    2/2     Running       0          45s    172.27.14.206    k8s-node02     <none>           <none>
demo-nginx-7d5fb74f4-tn7xk    2/2     Running       0          46s    172.25.244.241   k8s-master01   <none>           <none>

三、InitContainer挂载nfs卷
### --- 挂载nfs卷进去,写入内容,查看是否执行[root@k8s-master01 ~]# kubectl edit deploy demo-nginx    initContainers:- command:- sh- -c- echo "InitContainer" > /tmp/nfs/init  // 输出一行内容image: nginximagePullPolicy: IfNotPresentname: init1resources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:                           // 挂载一个nfs进去- mountPath: /tmp/nfsname: nfs-test

[root@k8s-master01 ~]# kubectl get po -owide
NAME                          READY   STATUS        RESTARTS   AGE     IP               NODE           NOMINATED NODE   READINESS GATES
demo-nginx-7d847948d8-8h8kt   2/2     Running       0          24s     172.25.92.85     k8s-master02   <none>           <none>
demo-nginx-7d847948d8-jtvtr   2/2     Running       0          22s     172.27.14.207    k8s-node02     <none>           <none>

### --- 查看文件是否被写入进去
~~~     启动它是被执行了2次初始化操作的root@demo-nginx-7d847948d8-8h8kt:/# cat /tmp/nfs/init
InitContainer               // 文件已经被写入进来

### --- 再次更改,它的输入内容[root@k8s-master01 ~]# kubectl edit deploy demo-nginx  initContainers:- command:- sh- -c- echo "InitContainer" >> /tmp/nfs/init     // 输出内容应该是3行是正确的

### --- 验证;是否输入3行内容[root@k8s-master01 ~]# kubectl get po
NAME                          READY   STATUS        RESTARTS   AGE
demo-nginx-7648bb7d-75vhx     2/2     Running       0          13s
demo-nginx-7648bb7d-9sdb7     2/2     Running       0          14s

~~~     所以说是每一个pod上面会挂一个InitContainer,InitContainer会执行我们的命令,
~~~     InitContainer在使用非常广泛,主要是做一些预处理的工作。比postStart使用好一些。[root@k8s-master01 ~]# kubectl exec -ti demo-nginx-7648bb7d-75vhx -- bash
root@demo-nginx-7648bb7d-75vhx:/# cat /tmp/nfs/init  // 输入了3行内容
InitContainer
InitContainer
InitContainer

CC00204.CloudKubernetes——|KuberNetes高级调度.V07|——|初始化容器|InitContainer操作|相关推荐

  1. CC00210.CloudKubernetes——|KuberNetes高级调度.V13|——|Pod亲和力反亲和力.v01|pod亲和力_同namespace|

    一.Pod亲和力和反亲和力概述 ### --- pod亲和力说明~~~ Pod亲和力:尽量将Pod部署在一起 ~~~ Pod反亲和力:不尽量将Pod部署在一起 ### --- 官方地址:~~~ htt ...

  2. CC00211.CloudKubernetes——|KuberNetes高级调度.V14|——|Pod亲和力反亲和力.v02|pod亲和力_跨namespace|

    一.pod的亲和力:跨namespace: ### --- pod亲和力实验说明~~~ 与指定pod部署在一块,是可以块namespace的: ~~~ 把demo-nginx和kube-systemn ...

  3. CC00212.CloudKubernetes——|KuberNetes高级调度.V15|——|Pod亲和力反亲和力.v03|pod反亲和力|

    一.Pod的反亲和力: ### --- 编辑yaml文件:编写pod的反亲和力的参数 ~~~ # 编辑yaml文件 ~~~ 就是尽量不和namespace下的kube-system,key:k8s-a ...

  4. Kubernetes(k8s)四、Pod生命周期(初始化容器的应用,探针liveness、readliness应用,)

    Pod生命周期 学习目标:初始化容器的应用及两个探针的应用 探针 是由 kubelet 对容器执行的定期诊断: Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应: liveness ...

  5. kubernetes之初始化容器

    参考:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ 初始化容器是什么? 在kubernetes中,一个pod可 ...

  6. Kubernetes 初始化容器顺序启动

    最近工作中需要保证容器启动之前PostgreSQL先启动,然后Apollo再启动,不然会出现配置加载错误的问题.Kubernetes的初始化容器就能够满足这种场景. InitContainers能够按 ...

  7. 运行支持kubernetes原生调度的Spark程序

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Spark 概念说明 Apache Spark 是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLa ...

  8. Kubernetes集群搭建及容器化部署

    Kubernetes集群搭建及容器化部署 目录 一.k8s 集群部署 2 1.k8s 快速入门 2 2.k8s 集群安装 10 二.k8s 容器化部署 18 1.Kubectl命令行部署 18 2.K ...

  9. k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略

    pod结构 Pause容器 Pause容器是每个Pod都会有的一个根容器,它的作用有两个 可以以它为根据,评估整个pod的健康状态 可以在根容器上设置IP地址,其他容器都以此IP(Pod IP),以实 ...

最新文章

  1. C/C++刷题知识点总结
  2. Android4.0添加底层核心服务
  3. seata 集群_【视频】 聊聊分布式事务解决方案seata
  4. win10专业版关闭smartscreen
  5. Quartz集成到 Spring
  6. android转web,Android 转 web app 笔记一:Touch事件
  7. FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_F
  8. 使用 pyinstaller 打包 py 文件成 exe 程序
  9. TableView Within Alert
  10. 配置maven使用阿里云仓库
  11. 网络百科——网络接口卡
  12. 网络管理(课程总结3)Week12 澳大利亚维多利亚大学VIT1104 Computer Networks
  13. HDU - 5773 贪心 + LIS
  14. 阿里云网盘内测申请_最新阿里云网盘官方申请地址,哪里可以获得阿里网盘内测码?9月23日截至...
  15. 国产工业机器人目前发展到了什么水平?
  16. PeopleSoft如何配置SMTP邮件服务
  17. 天天爱跑步【NOIP2016 T4】
  18. (转)业务知识_电子商务知识
  19. ultraedit15.00.0.1046注册码
  20. 家族查询系统c语言源程序,家谱管理系统(含源代码).docx

热门文章

  1. 微软承认部分 Win10 安装 12 月更新后出现 0xc000021a 蓝屏错误
  2. 删除计算机病毒怎么办,电脑软件客户端被误报病毒而删除了怎么办?
  3. 网络工程师--网络规划和设计案例分析(6)
  4. 深度揭秘高频交易盈利方式
  5. protues VSM 图形仿真帮助
  6. .NET人力资源管理系统源码 HRM系统源码分享
  7. vscode 解决 无法打开 chrome
  8. 企业vi设计中服装服饰类设计原则
  9. NSGA 2 学习笔记 -- crowding distance
  10. 生成分布式项目批次号