【问题标题】:Set up unique purpose pods with Helm / Kubernetes使用 Helm / Kubernetes 设置独特用途的 pod
【发布时间】:2019-06-22 02:46:20
【问题描述】:

我需要 n 个 pod 做基本相同的事情,但基于环境变量在不同的端点上运行。 例如,pod1 将处理 var1,pod2 将处理 var2 等等...

我能否在部署中拥有独特用途的 pod:将唯一变量传播到每个 pod?还是我需要有 n 个 statefulset,看起来更重?

【问题讨论】:

  • 有一个名为 labelSelectors(在本例中为 podSelector)的概念,您可以在 k8s 集群中创建和自定义服务部署。这是你正在尝试的吗?
  • 端点是指节点吗? “处理变量”的目的是什么你能澄清一下你想要实现的目标吗?
  • @aurelius 每个 pod 都是一个队列处理器,从他自己的队列中进行轮询。有很多队列,我想要一个 1 对 1 的关系(1 个队列 -> 1 个工作人员)。这意味着我需要将“queue-0”、“queue-1”传递给工作人员 0、1... 为部署中的 pod 定义自定义环境变量会很好。按照 Rajesh 的建议,我可以做的是制作有状态集。

标签: kubernetes kubernetes-helm kubernetes-pod kubernetes-deployment


【解决方案1】:

我认为单一部署是不可能的,因为这是无状态的,您需要维护状态。例如,如果 pod1 正在处理 var1 并且它死了,则应该创建新的 pod,它应该只处理 var1。所以这在单一部署中是不可能的。

但是有可能使用单个 StatefulSet 并在您的应用程序本身中进行一些更改。您可以将这些环境变量存储在某个地方(可能是 DB 或卷)和 pod 名称(在这种情况下是唯一的,因为它是 StatefulSet)针对每个 var。所以不是从环境变量中读取,而是根据 Pod 名称从存储中读取变量。

还可以使用 labelSelector 管理多个端点的创建。

【讨论】:

  • 你说得对,我会从我的 values.yaml 中的计数变量创建一个 statefulset。那会做的!谢谢
猜你喜欢
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2021-05-22
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 2021-05-01
相关资源
最近更新 更多