【发布时间】:2019-09-26 11:28:30
【问题描述】:
我需要一个基于 docker/python worker 的可扩展队列处理。我的想法转向了 Kubernetes。但是,我不确定最好的控制器/服务。
基于 azure 函数,我获得传入的 http 流量,将简单消息添加到存储队列。需要处理这些消息,并将结果反馈到结果队列中。
为了处理这些队列消息,我开发了循环队列并处理这些作业的 Python 代码。每次成功循环后,消息将从源队列中删除,并将结果写入结果队列。一旦队列为空,代码就存在。
所以我创建了一个运行 python 代码的 docker 镜像。如果启动了多个容器,则队列显然会更快地工作。 我还实施了新的 Azure Kubernetes 服务来扩展它。 在刚接触 kubernetes 时,我读到了作业范式,以在作业准备好之前工作队列。我的简单 yaml 模板如下所示:
apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
parallelism: 4
template:
metadata:
name: myjob
spec:
containers:
- name: c
image: repo/image:tag
我现在的问题是,作业无法重新启动。
通常,队列被一些条目填满,然后有一段时间没有任何反应。然后又会出现更大的队列,需要尽快处理。当然,那时我想再次运行这项工作,但这似乎是不可能的。另外,如果队列中没有任何内容,我想将占用空间减少到最低限度。
所以我的问题是,我应该在这种情况下使用什么架构/构造,是否有简单的 yaml 示例?
【问题讨论】:
标签: python azure docker kubernetes azure-aks