首页 > 解决方案 > 限制每个节点具有相同标签的 pod 数量

问题描述

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

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

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

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

标签: kubernetesazure-aks

解决方案


如前所述,编写自定义调度程序是实现所需目标的最佳选择。您可以按照这样的教程实现调度程序,并且您可以将其部署到默认调度程序之外,如此处所述

您可以为每个 Pod 指定要使用的调度程序。例如,您可以将自定义调度程序配置为仅用于此特定微服务,并将默认调度程序用于所有其他工作负载。


推荐阅读