在Kubernetes中动态运行Docker容器以执行作为API服务的任务?

我在Kubernetes中建立了一个基本体系结构,一个用于应用程序级代码的Laravel容器,一个用于数据库的Mysql容器。而且我正在寻求实现代码编译API服务(作为单独的容器),该服务接受用户生成的代码,然后运行docker容器来编译代码并将输出返回给用户。

在线上有一些非常原始的实现,但是大多数实现都使用docker作为在隔离环境中运行用户生成的代码编译的方法(您应该这样做),但是应用程序本身并不使用容器或容器管理系统托管。

问题是,如何在关闭容器之前启动docker容器以处理任务,然后将输出返回到我的Laravel API容器?

显然,在Docker容器中运行Docker容器不是最佳实践。

过程:

  1. 用户向Laravel API容器发送发布请求
  2. Laravel API容器将接收请求并运行docker容器来编译代码
  3. 临时docker容器在将编译后的输出返回到Laravel API容器之前 关闭。
  4. Laravel API容器将已编译的响应返回给最终用户。

我在Kubernetes集群中运行我的应用程序,并且需要Docker / Kubernetes解决方案。我宁可不必在我的应用程序级别代码中运行启动Docker容器的原始命令,而是拥有更高级别的解决方案。

masque1600 回答:在Kubernetes中动态运行Docker容器以执行作为API服务的任务?

您可以使用Kubernetes作业资源来执行此类任务。

可以生成Jobs对象以在内部运行进程,并且可以将其设置为之后自动终止。 Kubernetes中的工作是Pod的主管,该Pod负责执行批处理,即运行一定时间才能完成的过程。您可以在一个作业(并行或顺序)中运行多个Pod实例。

选中此page,以获取有关作业的更多详细信息。

因此,基本上,您的流程应如下所示:

  1. 用户发送对Laravel API容器的请求
  2. Laravel API容器需要与API服务器进行交互才能创建作业。
  3. 作业内部的Pod将编译代码,并在编译后将请求发送到Laravel API Pod,以交付已编译的二进制文件。

二进制文件的交付应由用户编码

  1. Laravel API容器将已编译的响应返回给用户。

This documentation link显示了如何连接到API,尤其是Accessing the API from a Pod

部分
本文链接:https://www.f2er.com/3119907.html

大家都在问