我有多个头盔图,每个头盔图都创建一个部署(通常每个头盔都创建一个吊舱)。
要求是序列化Pod的部署,即,在可以部署第二个Pod之前,第一个Pod必须处于运行状态。 (因为第二个Pod从第一个Pod读取值)。同样,第三个容器只能与第二个容器一起启动,运行或完成。
为此,我尝试使用伞形头盔挂钩,但挂钩是在图表对象级别而非图表集合上进行评估的。
我一直在寻找一个初始化容器,该容器在运行第二个容器之前会定期检查第一个容器的就绪探针(不确定是否可以这样做)?不确定-想法,请...
答案 0 :(得分:1)
初始化容器
如果您不介意在运行下一个服务之前先运行之前的服务,则可以利用“初始化容器”功能:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
它们在任何应用容器启动之前就运行完毕,而应用 容器并行运行,因此Init容器提供了一种简便的方法 阻止或延迟应用容器的启动,直到某些 满足先决条件。
行为
在启动Pod期间,依次启动Init容器, 网络和卷初始化之后。每个容器必须 在下一个开始之前成功退出。如果容器失败 由于运行时而启动或因失败而退出,则重试 根据Pod restartPolicy。但是,如果Pod restartPolicy 设置为始终,则初始化容器使用RestartPolicy OnFailure。
在所有初始化容器都成功之前,Pod不能准备就绪。的 初始化容器上的端口未在服务下聚合。豆荚 正在初始化的状态为Pending,但应该有一个 条件初始化设置为true。
如果重新启动Pod,则所有的初始化容器都必须再次执行。
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#detailed-behavior
注意事项
在决定使用此功能之前,请查看文档中的差异和限制。
即。
与常规容器的区别
初始化容器支持应用容器的所有字段和功能, 包括资源限制,数量和安全设置。然而, 处理初始化容器的资源请求和限制 稍有不同,