Kubernetes - 触发 Pod 的重新平衡

ref*_*los 5 scheduling kubernetes 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 ram 的 pod。目前任何节点都没有空间,所以 kubernetes 不会这样做(除非我添加另一个节点)。我想知道 kubernetes 是否会看到它可以将 Pod 3 移动到节点 1 以便为新 Pod 腾出空间?

帮助

log*_*kai 6

Kubernetes调度器孵化器项目最终将被集成到 Kubernetes 中以适应重新平衡。这可能是由于节点资源的使用不足/过度使用(如您的情况所示)或其他原因(例如节点污点或关联性发生变化)而引起的。

对于您的情况,您可以使用LowNodeUtilization策略和精心配置的阈值运行调度程序,以便在新的 1gb pod 之后驱逐一些 pod 并添加回 pod 队列。

另一种方法可以使用pod 优先级类来驱逐较低优先级的 pod,并为新传入的 1gb 作业腾出空间。从 1.11 版开始,默认情况下启用 Pod 优先级。优先级并不是一种重新平衡机制,但我提到它是因为它是确保可以调度更高优先级的传入 pod 的可行解决方案。优先级弃用了将在 1.12 中删除的旧重新调度程序。

编辑 - 包括示例策略

我用来测试这个的策略如下:

apiVersion: "descheduler/v1alpha1"
kind: "DeschedulerPolicy"
strategies:
  "LowNodeUtilization":
     enabled: true
     params:
       nodeResourceUtilizationThresholds:
         thresholds:
           "memory": 50
         targetThresholds:
           "memory": 51
           "pods": 0
Run Code Online (Sandbox Code Playgroud)