1

我有一个 Kubernetes pod,它下载多种类型的文件(比如说X,YZ),我有一些处理脚本(每个都在一个 docker 映像中),它们对一个或多个文件感兴趣(比如说processor_X_and_Y,processor_X_and_Zprocessor_Z)。

第一个 pod 一直在运行,我需要根据文件类型下载文件后创建一个处理器 pod,例如如果下载器下载了一个类型为 的文件Z,我需要创建一个新的实例processor_X_and_Z和一个新的实例processor_Z

我目前的想法是使用Argo 工作流,方法是为每个处理器从 1 步创建一个简单的工作流,然后通过从下载器 pod调用Argo REST API来启动合适的工作流。因此,我已经实现了我的目标和我的系统的自动缩放。

我的问题是 Kubernetes 中是否有另一个更简单的引擎或服务,我可以使用它从另一个 pod 创建一个新产品,而无需使用这个工作流引擎?

4

2 回答 2

0

正如另一个答案中提到的,您可以让 pod 访问 Kubernetes API,然后通过 kubectl 应用 Pod 资源。

如果要启动 Argo Workflow,可以使用 kubectl 应用 Workflow 资源,也可以使用Argo CLI

但是,如果您仍然使用 Argo,您可能会发现使用Argo Events启动 Workflow更容易。您必须根据下载源文件的方式/从何处选择事件源。例如,如果文件位于 S3 上,则可以使用 SNS 事件源。

如果您只需要定期检查新文件,您可以使用CronWorkflow来执行检查,并根据是否有要下载的内容有条件地执行工作流程的其余部分。

于 2020-05-26T20:39:27.560 回答
0

您只需让您的 pod 访问在控制平面上运行的 api-server。这将使它能够使用 kubectl 或任何其他 k8s 库来创建/编辑/删除 pod。您可能希望使用 RBAC 将其权限限制为手头任务所需的最低权限。

于 2020-05-26T19:52:13.227 回答