Kubernetes-触发Pod的重新平衡

时间:2018-08-31 00:01:08

标签: kubernetes scheduling rebalancing

我有一个设置了几个节点的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腾出空间?

帮助

1 个答案:

答案 0 :(得分:1)

Kubernetes descheduler孵化器项目最终将集成到Kubernetes中,以适应重新平衡。这可能是由于您的情况所提示的节点资源的不足/过度利用或其他原因(例如,节点污点或亲和力的变化)引起的。

对于您的情况,您可以使用LowNodeUtilization策略运行调度程序,并仔细配置阈值,以驱逐某些Pod,并在新的1gb 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