7

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

帮助

4

1 回答 1

8

Kubernetes descheduler孵化器项目最终将被集成到 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
于 2018-08-31T00:57:26.277 回答