如何从另一个现有 Pod 创建新的 Kubernetes Pod?



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

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

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

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

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

如果你想启动一个 Argo 工作流,你可以使用 kubectl 来应用一个工作流资源,或者你可以使用 Argo CLI。

但是,如果您无论如何都在使用 Argo,您可能会发现使用 Argo Events 来启动工作流更容易。您必须根据下载源文件的方式/位置选择事件源。例如,如果文件位于 S3 上,则可以使用 SNS 事件源。

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

您只需授予 Pod 对控制平面上运行的 API 服务器的访问权限。这将使它能够使用 kubectl 或任何其他 k8s 库创建/编辑/删除 pod。您可能希望使用 RBAC 将其权限限制为手头任务所需的最小权限。

最新更新