以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!
目录
一、基本介绍
二、主要特点
三、资源清单(示例)
一、基本介绍
初始化容器即 initContainer。
在 Kubernetes 中,initContainer 用于在 Pod 中的业务容器启动之前,执行某些特定的初始化任务来提升 Pod 运行状态的稳定,如:
- 探测并等待某些服务(如数据库服务)的启动和可用性
- 执行一些预处理任务,如预加载数据
- 为业务容器生成环境变量或配置文件
二、主要特点
- initContainer 共享业务容器的网络命名空间
- initContainer 可以访问业务容器挂载的卷
- 每个 initContainer 必须成功完成,业务容器才能继续启动
三、资源清单(示例)
apiVersion: apps/v1
kind: Deployment
metadata:
nanme: demo-deployment
spec:
...
spec:
initContainers:
- name: demo-init
image: busybox
command:
- "/bin/sh"
- "-c"
- "until nc -w 2 -z mysql 3306;do echo mysql is not ready.;sleep 2;done"
containers:
- name: demo-container
...
上述资源清单中定义了一个 initContainer,该 initContainer 使用 busybox 镜像(自带 ping、nslookup、nc 等工具),在业务容器启动之前执行命令探测 MySQL 服务是否就绪。当 initContainer 探测成功并退出后,业务容器 demo-container 开始启动,可以避免 demo-container 因无法连接 MySQL 服务而报错重启、Pod 一直处于 CrashLoopBackOff 状态。