0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

initContainer工作原理

马哥Linux运维 来源:马哥Linux运维 2023-05-30 09:49 次阅读

一、initContainer工作原理

27911496-fe68-11ed-90ce-dac502259ad0.png

初始化容器是在pod的主容器启动之前要运行的容器,主要是做一些 主容器的前置工作,它具有两大特征:

1、初始化容器必须运行完成直至结束,若某初始化容器运行失败,那么kubernetes需要重启它直到成功完成;

2、初始化容器必须按照定义的顺序执行,当且仅当前一个成功之后,后面的一个才能运行,一旦失败,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动;

初始化容器有很多的应用场景,下面列出的是最常见的几个:

提供主容器镜像中不具备的工具程序或自定义代码;

初始化容器要先于应用容器串行启动并运行完成,因此可用于延后应用容器的启动直至其依赖的条件得到满足;

二、initConatiner数据共享

需求:假设要以主容器来运行nginx,但是要求在运行nginx之前需要拿到最新的index主页;

创建pod-initcontainer.yaml,内容如下:

apiVersion:v1
kind:Pod
metadata:
name:php-updated
spec:
containers:
-name:php
 image:php:7-fpm
 volumeMounts:
 -name:dir
  mountPath:/var/www/html/
initContainers:
-name:install
 image:busybox
 volumeMounts:
 -name:dir
  mountPath:/var/www/html/
 command:
 -wget
 -"-O"
 -"/var/www/html/index.php"
 -https://gitee.com
volumes:
-name:dir
 emptyDir: {}

启动成功后,登陆进PHP容器,可以查看到/var/www/html/目录下的index.html文件为init container所生成。

三、initConatiner前置数据操作

初始化容器和PortStart的区别

PostStart:依赖主应用的环境,而且并不一定先于Command运行

InitContainer:不依赖主应用的环境,可以有更高的权限和更多的工具,一定会在主应用启动之前完成。

Init 容器不支持 lifecycle、livenessProbe、readinessProbe 和 startupProbe。

需求:

假设 主容器在运行前,需要依赖一个B应用,只有B应用成功启动后此容器才可以正常运行;

创建pod-initcontainer22.yaml,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
 run: my-app
name: my-app
spec:
replicas: 2
selector:
 matchLabels:
  run: my-app
template:
 metadata:
  labels:
   run: my-app
 spec:
  restartPolicy: Always
  containers:
  - name: myapp-container
   image: busybox:1.28
   command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myappb
   image: busybox:1.28
   command: ['sh', '-c', "until nslookup myappb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myappb; sleep 2; done"]

创建测试所用的svc:

apiVersion: v1
kind: Service
metadata:
name: myappb
spec:
ports:
- protocol: TCP
 port: 80
 targetPort: 9377

为创建svc前,initcontainer一直处于等待,可以从console端输出日志看到其状态,一旦创建svc,initcontainer探测到svc正常后,即启动后续的mainContainer。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 容器
    +关注

    关注

    0

    文章

    495

    浏览量

    22060
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539
  • 镜像
    +关注

    关注

    0

    文章

    164

    浏览量

    10707

原文标题:initContainer多场景应用

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电容降压的工作原理

    电容降压的工作原理 电容降压的工作原理并不复杂。他的工作原理是利用电容在一定的交流信号频率下产生的容抗来限制最大工作
    发表于 11-30 10:47 1439次阅读

    感光太阳能灯工作原理。#工作原理大揭秘

    太阳工作原理DIY
    jf_24750660
    发布于 :2022年11月07日 22:26:04

    时域反射计的工作原理

    传统时域反射计工作原理时域反射计TDR是最常用的测量传输线特征阻抗的仪器,它是利用时域反射的原理进行特性阻抗的测量。图1是传统TDR工作原理图。图1时域反射计TDR工作原理
    发表于 07-01 08:23

    伺服电机的工作原理是什么

    什么是伺服系统?伺服电机的工作原理是什么?交流伺服电机的工作原理是什么?
    发表于 10-11 08:32

    伺服阀的工作原理

    伺服阀的工作原理 图2是伺服阀的工作原理图。
    发表于 11-19 16:21 1.6w次阅读

    步进电机的工作原理

    步进电机的工作原理 以磁阻式步进电机为例,介绍一下步进电机的工作原理,图1. 1是磁阻式步进电机工作原理的示意图。它的定子上有六个
    发表于 03-30 16:53 8685次阅读
    步进电机的<b class='flag-5'>工作原理</b>

    光栅的工作原理

    光栅的工作原理 常见光栅的工作原理都是根据物理上莫尔条纹的形成原理进行工作的。图4-9是其工作原理图。当使指示光栅上的线纹与标尺光栅上的线纹
    发表于 05-06 23:23 2.3w次阅读
    光栅的<b class='flag-5'>工作原理</b>

    串行端口工作原理

    串行端口工作原理 串行端口工作原理 9针连
    发表于 07-24 00:21 1882次阅读

    BIOS工作原理

    BIOS工作原理 BIOS简介 BIOS工作原理
    发表于 07-26 12:32 5859次阅读

    声卡的工作原理

      声卡的工作原理 声卡的工作原理:声卡的工作原理其实很简
    发表于 12-21 14:18 1997次阅读

    控系统的工作原理是什么?

    控系统的工作原理是什么? 控系统的工作原理   中央控制系统采用多机通讯技术和系统集成技术,
    发表于 02-11 15:26 1415次阅读

    电冰箱的工作原理

    本内容介绍了电冰箱的工作原理,电冰箱致冷的原理和种类,家用冰箱空调的工作原理,电冰箱的工作原理
    发表于 05-14 16:15 7.7w次阅读
    电冰箱的<b class='flag-5'>工作原理</b>

    AGV的工作原理、控制方式及应用

    AGV的工作原理、控制方式及应用AGV的工作原理、控制方式及应用
    发表于 12-18 16:31 151次下载

    光耦的工作原理

    光耦的工作原理 光耦的工作原理 光耦的工作原理
    发表于 12-25 15:10 0次下载

    逆变器工作原理视频

    本文以逆变器的工作原理为中心而展开的话题阐述,分别介绍了全控型逆变器工作原理和半控型逆变器工作原理
    的头像 发表于 08-02 16:02 5w次阅读