【问题标题】:Stateful jobs in KubernetesKubernetes 中的有状态作业
【发布时间】:2019-09-07 15:12:25
【问题描述】:

我需要偶尔运行一项临时作业。这项工作需要一些状态才能工作。建立国家需要很多时间。因此,希望在后续运行中保持状态的持久性和可重用性,以加快周转时间。我希望这项工作作为 K8s pod 进行管理。

这是一套完整的要求:

  1. Pod 将在工作完成后关闭。 K8s 控制器不应尝试启动 pod。
  2. 每个 pod 都应附加一个持久卷。每个 pod 应该有 1 个卷。我打算使用 EBS。
  3. 将来我们应该能够手动恢复 pod。
  4. 与过去的运行相比,未来的运行可能有更多或更少的副本。

我知道 K8s 支持 Jobs 和 Statefulsets。有没有同时支持两者的Controller?

【问题讨论】:

    标签: kubernetes jobs stateful


    【解决方案1】:
    1. Pod 将在工作完成后关闭。 K8s 控制器不应该尝试 调出豆荚。

    这就是乔布斯所做的——运行到完成。您只能控制是否要重试 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(例如分片)中保持角色。

    【讨论】:

    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多