Kubernetes。我可以从其他POD中执行POD中的任务吗?

时间:2020-11-09 17:21:39

标签: kubernetes

我想知道是否有从POD执行任务的选项?因此,当我拥有POD时,例如,侦听某些请求并根据请求将任务委派给其他POD(工作人员POD)。当没有要执行的工作,并且如果有多个工作要执行时,该工作人员POD将无法运行。作业完成后,“工作人员POD”将停止。因此,工作人员POD在一项任务中处于活动状态,然后被杀死,并且在新任务到达时启动新的工作人员POD。我希望我能正确地描述它。您知道在Kubernetes中这是否可行吗?可以通过例如从主POD进行休息呼叫来启动工作人员POD。

1 个答案:

答案 0 :(得分:0)

有几种方法可以实现这种行为。

纯粹的Kubernetes方式

此解决方案需要ServiceAccount配置。请掠夺Kubernetes文档Configure Service Accounts for Pods

您的应用程序service/pod可以处理不同的自定义任务。最佳做法是将特定的serviceaccount应用于您的广告连播,以执行特定的任务。在kubernetes中,结合使用service account和预定义/指定的RBAC规则,您几乎可以立即解决此任务。

主要概念是通过赋予不同的权限(RBACservice accountget,{{1 }})分配给不同的list资源,例如(watchcreate)。

在这种情况下,工作Pod正在等待传入请求,在收到特定请求后,它可以针对kubernetes api执行特定任务。

这可以扩展,即通过在工作窗格中使用Kubernetes。有关pod的更多详细信息,可以在this article中找到。

创建自定义控制器

另一种实现目标的方法是使用jobs

Extending the Kubernetes Controller文章中提供的示例显示了sidecar container如何监视kubernetes api以便检测底层的工作容器(监视kubernetes配置是否有任何更改,然后删除相应的容器)。在您的设置中,这样的控制器可以监视您的api是否收到sidecar concept请求,并执行其他任务,例如在k8s集群中创建kubernetes job

使用现有解决方案,例如Custom Controller