initContainer多场景应用

initContainer多场景应用

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

  • 1、初始化容器必须运行完成直至结束,若某初始化容器运行失败,那么需要它直到成功完成;
  • 2、初始化容器必须按照定义的顺序执行,当且仅当前一个成功之后,后面的一个才能运行,一旦失败,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动;

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

  • 提供主容器镜像中不具备的或自定义代码;
  • 初始化容器要先于应用容器串行启动并运行完成,因此可用于延后应用容器的启动直至其依赖的条件得到满足;

二、initConatiner数据共享

需求:假设要以主容器来运行,但是要求在运行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:
-
-"-O"
-"/var/www/html/index.php"
-https://gitee.com
volumes:
-name:dir
emptyDir: {}

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

三、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./serviceaccount/namespace).svc.cluster.local; do echo waiting 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。

给TA打赏
共{{data.count}}人
人已打赏
运维笔记

404页高性能MySQL超全笔记,一天搞定MySQL!

2023-10-10 18:34:13

运维笔记

如何查看 Linux 服务器性能参数指标?

2023-10-10 18:34:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索