假设在ec2-autoscaling min中我们有4个节点的eks集群。 一个Kubernetes应用程序堆栈部署在一个Pod-一个节点的同一堆栈上。现在,流量增加了在eks级别触发的HPA。 现在,总吊舱为8个吊舱,两个吊舱-在一个节点上。也触发了自动缩放。现在总共有6个节点。
它观察到所有豆荚都保持当前状态。也要进行自动缩放。
有直接而简单的方法吗? 一些已经运行的Pod应该自动在其他节点上启动(检测它并在最近添加的空闲worker /节点上重新安排自身的时间(即未使用-通过强制驱逐Pod)
谢谢。
答案 0 :(得分:1)
看看Descheduler。该项目作为Kubernetes作业运行,旨在在认为集群不平衡时杀死吊舱。
LowNodeUtilization
策略似乎适合您的情况:
此策略查找未充分利用的节点并逐出容器,如果 可能,从其他节点出发,希望重新获得被驱逐的豆荚 将在这些未充分利用的节点上进行调度。
另一种选择是手动应用一些混乱的工程,在部署上强制进行滚动更新,希望调度程序将在重新创建Pod时解决平衡问题。
您可以使用kubectl rollout restart my-deployment
。这比简单地使用kubectl delete pod
删除吊舱要好,因为推出将确保“重新平衡”期间的可用性(尽管完全删除吊舱会增加获得更好平衡的机会)。
答案 1 :(得分:0)
一种简单的方法是使用以下命令通过选择器删除所有这些Pod,然后让部署在集群中重新创建这些Pod
kubectl delete po -l key = value
可能还有其他可能性。会很高兴认识别人