我有一个kubernetes集群,其中设置了一些节点。我想确保pod在节点上有效分布。
我会解释一下:
我们假设我有两个节点:
Node 1 - 2gb ram
Node 2 - 2gb ram
我有这些豆荚:
Pod 1 - 1gb ram on Node 1
Pod 2 - 100mb ram on Node 1
Pod 3 - 1gb ram on Node 2
Pod 4 - 100mb ram on Node 2
现在好了问题:假设我想在集群中添加一个带1gb内存的pod。目前在任何节点都没有空间,所以kubernetes不会这样做(除非我添加另一个节点)。我想知道kubernetes是否会看到它可以将Pod 3移动到节点1以便为新pod提供空间?
救命
Kubernetes descheduler孵化器项目最终将整合到Kubernetes以适应再平衡。这可能是由于您的情况建议的节点资源的过度/过度使用或其他原因(例如节点污点或亲和力的变化)。
对于您的情况,您可以使用LowNodeUtilization
策略运行descheduler并仔细配置阈值,以便在新的1gb pod之后将一些pod逐出并添加回pod队列。
另一种方法可以使用pod priority类来驱逐较低优先级的pod,并为新传入的1gb作业腾出空间。默认情况下,从版本1.11开始启用Pod优先级。优先级并不是一种重新平衡机制,但我提到它是因为它是确保可以安排更高优先级传入pod的可行解决方案。优先级弃用将在1.12中删除的旧rescheduler。
编辑 - 包括示例政策
我用来测试的政策如下:
apiVersion: "descheduler/v1alpha1"
kind: "DeschedulerPolicy"
strategies:
"LowNodeUtilization":
enabled: true
params:
nodeResourceUtilizationThresholds:
thresholds:
"memory": 50
targetThresholds:
"memory": 51
"pods": 0