Kubernetes Job:正好一个pod

时间:2017-07-04 06:46:36

标签: parallel-processing kubernetes

我想一次只运行一个我的kubernetes应用程序的pod(如果失败则重新启动),我正在使用job controller

但是根据文档,kubernetes可能会启动多个pod并最终实现指定的副本。有没有办法一次实现一个pod或任何推荐的设计模式用于此类用例。

我的应用正在从HDFS读取数据并将其写入消息队列。它在处理完所有文件后退出。我希望尽量减少写重复记录的可能性。

3 个答案:

答案 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之前被终止。