我试图找到一个明确的答案,我确信它在kubernetes文档中的某个地方,但我找不到它。
如果我的集群中有4个节点,并且正在运行一个计算密集型pod,该pod可能会耗尽单个节点上的所有/大部分资源,并且我将该pod扩展到4个副本- kubernetes会自动将这些新pod放在未使用的节点上吗?
或者,在计算密集型pod实际上并没有处理数据的情况下,但我将pod扩展到4个副本(即:运行原始pod的节点有大量的“可用”资源),kubernetes是否仍然会看到还有3个完全空闲的节点并启动它们上的pod?
发布于 2021-11-05 14:56:39
Kubernetes将在任何有足够资源的节点上调度新的pod。因此,如果节点有足够的剩余资源,那么新创建的pods中的一个可能会在已经运行的节点上结束。
您可以使用反亲和性来防止pod与来自相同部署的pod在同一节点上进行调度,例如,使用开发的标签
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: resources-group
operator: In
values:
- high
topologyKey: topology.kubernetes.io/zone有关该主题的更多信息,请阅读docs。
发布于 2021-11-05 14:52:21
据我所知,这取决于调度程序的配置。如果您正在运行本地kubernetes集群,并且您有权访问调度程序进程,则可以根据自己的喜好调整策略(请参阅documentation)。
否则,您只能玩实例资源的请求/限制和反亲和性(参见here)。
https://stackoverflow.com/questions/69855042
复制相似问题