Kubernetes的有状态工作

问题描述 投票:1回答:1

我需要偶尔运行临时工作。这项工作需要一些国家的工作。建设国家需要很多时间。因此,期望在后续运行中保持状态持久且可重复使用,以实现快速周转时间。我希望将这份工作作为K8s pod进行管理。

这是一套完整的要求:

  1. 工作结束后,豆荚会下降。 K8s控制器不应该试图调出pod。
  2. 每个pod应该附加一个持久卷。每个pod应该有1个卷。我打算用EBS。
  3. 我们应该能够在将来手动将pod重新启用。
  4. 未来的运行可能比过去的运行具有更多或更少的副本。

我知道K8s支持Jobs和Statefulsets。是否有任何控制器同时支持两者?

kubernetes jobs stateful
1个回答
2
投票
  1. 工作结束后,豆荚会下降。 K8s控制器不应该试图调出pod。

这就是乔布斯所做的 - 运行完成。你只能控制你是否想在exit > 0上重试。

  1. Pod应该有一个持久的卷附加到它们。

全部相同的音量?他们会写还是只读?你有什么卷后端,AWS EBS或类似的?根据答案,您可能希望在几个卷之间拆分输入数据,或者使用单独的卷进行写入,然后使用单个卷进行汇总,以便在1个卷中进行汇编(减少一种映射)。或者使用支持多装载RW https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes的音量后端(参见ReadWriteMany表)

  1. 我们应该能够在将来手动将pod重新启用。

适合这里的工作:你需要它时启动它,它一直运行到完成。

  1. 未来的运行可能比过去的运行具有更多或更少的副本。

乔布斯适合这里。启动工作时指定不同的completionsparallelismhttps://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#parallel-jobs

StatefulSets是不同的概念,它们主要用于连续运行的集群软件,需要保持每个pod的角色(例如分片)。

© www.soinside.com 2019 - 2024. All rights reserved.