【发布时间】:2021-05-28 10:14:56
【问题描述】:
我尝试了几种方法,文档建议有一种方法可以自动缩放来处理队列(没有外部解决方案)https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/,但没有解释如何
我创建了一个部署,它部署从 redis 队列中提取的 pod(集群中有一个 redis 服务)。我想创建一个系统,其中 pod 水平缩放以处理从队列中拉出任务并执行它们。执行任务可能会花费不可预测且可变的时间。
如果 pod A 从队列中拉出一个任务并且很忙,我想启动 Pod B 来拉下一个任务。目前我正在使用轮询,因此如果队列为空,则相关 pod 将继续尝试从队列中拉出。
我使用了水平 pod 自动缩放,它至少在 pod1 工作时横向扩展,但因为 pod2 在运行时不会降低平均利用率,它只是不断地将新的 pod 旋转到最大。对于我的用例,这是半好的,因为如果队列是空的,任何获得空队列的 pod 都会导致利用率下降,理论上,当队列为空时,多余的 pod 都会减速。 . 但是感觉效率不是很高,问题是自动缩放器会缩小正在运行的作业中间的 pod。
我已经研究过使用较新的指标 api,但似乎不需要创建自定义指标 api 来实现这一点,这对于这样一个简单的用例来说似乎是极端的。
我也研究过使用 Jobs,但这似乎根本不支持自动缩放?
我真的希望能够根据即将缩减的特定 pod 的 CPU 利用率进行缩减,而不是所有 pod 的平均值。
【问题讨论】:
标签: kubernetes redis