我想一次只运行一个我的kubernetes应用程序的pod(如果失败则重新启动),我正在使用job controller。
但是根据文档,kubernetes可能会启动多个pod并最终实现指定的副本。有没有办法一次实现一个pod或任何推荐的设计模式用于此类用例。
我的应用正在从HDFS读取数据并将其写入消息队列。它在处理完所有文件后退出。我希望尽量减少写重复记录的可能性。
答案 0 :(得分:0)
我建议你使用replicasets。将副本数量设置为1.此处更多https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/#when-to-use-a-replicaset
答案 1 :(得分:0)
原则上,如果乔布斯没有隐含的悖论,就不应该存在这种“竞争条件”(根据文献[1]应该为“1”)。只有在尝试失败时才会重新安排该作业。您是否遇到过同一个工作中的2个pod同时被执行的情况?
在任何情况下,如果您想完全确定,您可能需要实施额外的协调方法或外部解决方案。
[1] https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
答案 2 :(得分:0)
如果我理解你的问题,我认为你正在寻找:.spec.strategy.rollingUpdate.maxSurge
如果将此值设置为0,那么现有的pod将在开始新的pod之前被终止。