如何在所有节点/工作人员之间自动进行AWS EKS(kubernetes)中的Pod的重新平衡

时间:2019-11-01 09:47:40

标签: kubernetes amazon-eks

假设在ec2-autoscaling min中我们有4个节点的eks集群。 一个Kubernetes应用程序堆栈部署在一个Pod-一个节点的同一堆栈上。现在,流量增加了在eks级别触发的HPA。 现在,总吊舱为8个吊舱,两个吊舱-在一个节点上。也触发了自动缩放。现在总共有6个节点。

它观察到所有豆荚都保持当前状态。也要进行自动缩放。

有直接而简单的方法吗? 一些已经运行的Pod应该自动在其他节点上启动(检测它并在最近添加的空闲worker /节点上重新安排自身的时间(即未使用-通过强制驱逐Pod)

谢谢。

2 个答案:

答案 0 :(得分:1)

看看Descheduler。该项目作为Kubernetes作业运行,旨在在认为集群不平衡时杀死吊舱。

LowNodeUtilization策略似乎适合您的情况:

  

此策略查找未充分利用的节点并逐出容器,如果   可能,从其他节点出发,希望重新获得被驱逐的豆荚   将在这些未充分利用的节点上进行调度。


另一种选择是手动应用一些混乱的工程,在部署上强制进行滚动更新,希望调度程序将在重新创建Pod时解决平衡问题。

您可以使用kubectl rollout restart my-deployment。这比简单地使用kubectl delete pod删除吊舱要好,因为推出将确保“重新平衡”期间的可用性(尽管完全删除吊舱会增加获得更好平衡的机会)。

答案 1 :(得分:0)

一种简单的方法是使用以下命令通过选择器删除所有这些Pod,然后让部署在集群中重新创建这些Pod

kubectl delete po -l key = value

可能还有其他可能性。会很高兴认识别人