【问题标题】:Limit the number of pod with the same label per node限制每个节点具有相同标签的 pod 数量
【发布时间】:2020-03-25 17:37:45
【问题描述】:

我有一个包含 2 个节点池的大型 aks 生产集群,每个节点池有 50 个节点,我还有大约 15 种具有不同 CPU 请求和使用率的微服务。

经过研究,我发现其中一个微服务在同一个节点上只能有2或3个实例,因为这个微服务头的CPU使用率特殊。

在 kubernetes 中有什么解决方案可以做这个操作吗? 我知道我只能使用 nodeAffinity 在同一个节点中限制一种,但我希望在同一个节点上有 2 或 3 个。

我找到了这个 alpha 选项: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/,但它是 alpha 版,它将检查仅限于来自同一命名空间的 pod,以及我在几个命名空间中的微服务,但具有相同的行为

【问题讨论】:

  • 你的意思是,你想限制一个节点上的一个 pod 的副本数为 2 或 3,即使该节点有额外的资源?
  • 是的,我更喜欢不同的微服务使用这些资源

标签: kubernetes azure-aks


【解决方案1】:

如前所述,编写自定义调度程序是实现所需目标的最佳选择。您可以按照this 之类的教程来实现调度程序,并且您可以按照here 的说明在默认调度程序之外部署它。

您可以specify for each Pod which scheduler to use。例如,您可以将自定义调度程序配置为仅用于此特定微服务,并将默认调度程序用于所有其他工作负载。

【讨论】:

  • 我认为这对我来说现在是一个非常大的项目,希望他们将来为此发布一些东西
【解决方案2】:

不,您找到的拓扑约束系统是最接近的。你需要为这个特定的事情编写自己的调度程序。

【讨论】:

  • 但我不明白为什么他们将其限制为仅适用于来自同一命名空间的 pod?
  • 因为通常命名空间与其他体系隔离,所以它定义了命名空间。想象一下,如果您可以在另一个命名空间上设置约束,您可以轻松地使用它来发现有关该 ns 中的 pod 的信息。
猜你喜欢
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多