文章

Pod的生命周期

Init 容器与普通容器非常相似,但存在以下两点关键区别:

  1. 运行要求:Init 容器必须运行到成功完成为止。
  2. 启动顺序:每个 Init 容器都必须在下一个 Init 容器启动之前成功完成。

此外,关于 Init 容器的重启机制:

  • 若 Pod 的 Init 容器失败,Kubernetes 会不断重启该 Pod,直到 Init 容器成功运行为止。
  • 例外情况:如果 Pod 对应的 restartPolicy 设为 Never,则不会重新启动。

Init 容器(InitC)与应用容器相比,具有以下特性和差异:

  • 镜像独立性:Init 容器可以使用与应用容器不同的镜像,因此可以将一些具有潜在风险的工具(如调试工具、特殊权限解析工具等)放置在 Init 容器中,避免直接暴露在应用容器中,减少安全风险。
  • 启动顺序:多个 Init 容器之间按定义顺序线性启动(前一个完成后,下一个才会启动),因此可利用这一特性执行需要顺序依赖或延迟性的操作(如等待依赖服务就绪、初始化配置等)。
  • 探针限制:Init 容器无法定义 readinessProbe(就绪探针),因为其核心作用是在应用容器启动前完成初始化,无需通过就绪探针判断是否可接收请求。除此之外,Init 容器的定义方式(如资源限制、环境变量、挂载等)与应用容器基本一致。
本文由作者按照 CC BY 4.0 进行授权