这更多是成本估算问题,而不是如何使用节点亲和性等功能。
所以基本上有 m
pods 有一些限制,例如:
Deployments
/ StatefulSets
的每个 pod 应该在不同的 kubernetes 节点上Deployments
/ StatefulSets
的 Pod 应该在 3 个可用区上保持平衡现在,我想找出我需要托管多少个节点(所有类型相同)给定的 Deployments
/ StatefulSets
集。
我最初认为这更像是使用匈牙利算法解决的分配问题,但这在多维约束等术语中似乎要复杂得多。
答案 0 :(得分:2)
Kubernetes 根据许多约束来分配 Pod,例如
这是一篇很好的文章:https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/
还有:https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
我建议阅读:https://kubernetes.io/docs/concepts/scheduling-eviction/
答案 1 :(得分:2)
据我所知,kube-scheduler 默认使用的算法在 github here 上有描述。
它解释了它是如何工作的。它首先过滤不满足 Pod 要求的节点,例如资源请求 > 节点上的可用资源、亲和性等
然后使用排序算法来确定最佳拟合节点。想要更深入地了解
答案 2 :(得分:1)
参考用户 Harsh Manvar 的非常好的回答,我将补充一些我自己的信息。正如我的前任所描述的那样,该主题已在 documentation 中进行了介绍。除了她,你还可以找到非常好的材料here:
<块引用>在 Kubernetes 集群上创建 Pod 时会发生什么? 在几秒钟内,Pod 就会在其中一个集群节点上启动并运行。然而,在那几秒钟内发生了很多事情。来看看:
您还可以找到有关调度过程和调度程序算法的tutorial。