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