我已经构建了一个使用 celery 异步运行任务的应用程序。我有 celery 在托管在 Amazon AWS m4.large 实例上的 2 个 Kubernetes pod 上工作。
我还设置了水平 pod 自动缩放,以便当 CPU 利用率超过 80% 时,pod 会缩放。我在 AWS 中有一个自动缩放组,当实例 CPU 利用率达到 80% 以上时,它也会进行缩放。
在大约一个小时内,集群扩展到 5 个实例,所有实例都以 ~100% 的 CPU 利用率运行,但随后所有其他 celery pod 以 ~2% 的速度运行,只有一个以 ~100% 的速度运行。队列中仍有许多任务,但似乎我的 pod 中只有一个正在全力运行。
这里发生了什么?如何均匀分配任务,使所有 5 个 pod 以相似的 CPU 利用率运行,直到所有任务完成?
运行 kubectl top pod 时。我的一个 pod 运行 1900 毫 CPU,其他的运行 1 毫 CPU。