首页 > 解决方案 > 如何在 kubernetes 中维护一组唯一的数字运算容器?

问题描述

我想在 kubernetes 中运行一组“容器”,每个容器仅在 docker 环境变量中有所不同(每个都搜索它自己的数据集,该数据集位于网络存储中,然后缓存到容器的 ram 中)。例如:

随着时间的推移,我想从这个“集合”中添加(有时删除)容器,但不想在这样做时重新启动所有容器。

根据我对 Kubernetes 的(幼稚)知识,我能看到的唯一方法是:

所以我的问题是:

  1. 我可以使用 StatefulSet 来管理它吗?

    1.1。当 StatefulSet 被“更新”时,它是否必须重新启动所有 pod,即使它们的“规范”没有改变?1.2 StatefulSets 是否允许每个独特的容器/pod 拥有自己的环境变量?

  2. 是否有任何 kubernetes 概念将部署“分组”到某个逻辑单元中?
  3. 关于如何在 Kubernetes 中实现这一点还有其他想法吗?
  4. docker swarm(或其他容器管理平台)会更适合我的用例吗?

标签: kuberneteskubernetes-podkubernetes-statefulsetkubernetes-deployment

解决方案


如果您希望您的容器最终完成其工作负载并终止(而不是永远处理加载到 RAM 中的单个项目),您应该在 Kubernetes 之上使用诸如 Celery 之类的作业队列来管理执行。在这种情况下,Celery 将完成所有的编排,包括在作业失败时重新启动作业。这比直接使用 Kubernetes 更易于管理。

Kubernetes 甚至提供了这种设置的官方示例


推荐阅读