我希望应用程序将项目从队列中拉出,处理该队列中的项目,然后销毁自身。拉->处理->销毁。
我看过使用适合每个用例的作业模式“每个工舱有队列”,但是当队列为空并缩放到一个点时,我需要作业自动缩放0/1吊舱时,这是不合适的添加项目时。我看到的唯一方法是通过部署,但这消除了每个工作项带有Pod的队列模式。每个物品必须有一个新鲜的容器。
是否有一种使工作模式“队列”与“每个工作项”都带有Pod但具有自动缩放功能的方法?
答案 0 :(得分:2)
我有点困惑,所以我只想这样说:如果您不介意一个失败的Pod,并且希望Kubernetes不会重新创建一个失败的Pod,则可以在代码中捕获所有错误并正常退出(不建议)。
另请注意,对于部署,唯一接受的restartPolicy
始终是。因此,崩溃的部署的Pod将始终由Kubernetes重新启动,并且可能由于相同的原因而失败,从而导致CrashLoopBackOff
。
如果要根据RabbitMQ队列的长度扩展部署,请选中KEDA。这是一个事件驱动的自动缩放平台。 确保还使用RabbitMQ
检查他们的示例另一种可能性是作业/部署,它会定期检查相关队列的长度并执行kubectl
命令来扩展部署。
Here是我所能找到的最干净的,至少就我的口味而言