我有一个包含两个容器的ReplicationController,第一个是一个长寿命的pod,第二个是在RC启动一个POD时执行一些维护任务。但是,由于第二个容器是短暂的,它在完成启动任务时会自行停止。 当Kuberbetes注意到这一点时,它会终止POD并开始新的......
在Kuberbetes中处理此问题的正确方法是什么?
答案 0 :(得分:5)
正如您已经注意到的那样,通过设计,容器中的所有容器都注定要一起生存和死亡。如果不知道你的伙伴需要执行什么样的维护任务,那就很难说出你最好的选择。一般来说,我可以想到三种方法:
保持维护容器正常运行。这可能是一个相当丑陋的解决方案,因为它浪费资源。只有维护任务可以从定期运行中受益,才真正有意义。
将维护任务移至主容器,有效地将多容器窗格转换为单容器窗格。我假设您可以异步运行任务(因为您已经可以在单独的容器中运行它);如果由于某些原因,您不能,请考虑相应地修改readiness and liveness probes,以便您的容器有足够的时间完成任何启动程序,然后才有资格终止。
考虑调整您的设计,以便维护任务可以作为单独的窗格运行(或者甚至可以作为job)。然后,您需要通过正确组合Kubernetes原语来管理任何依赖关系并自行布线。