Kubernetes 或 Docker-Compose - 如何从队列中立即生成新的 docker 镜像

Kubernetes 或 Docker-Compose - 如何从队列中立即生成新的 docker 镜像

我有一份预定的工作项目清单。

  1. 当工作项“准备就绪”时,“调度程序”应动态启动“工作程序”Docker 映像。
  2. “工人”运行15-240分钟即可完成。
  3. 如果资源不够,“调度程序”应该等待并及时重试。
  4. 我稍后会实现节点扩展。

在 Docker-Compose 或 Kubernetes 中实现这个的最简单方法是什么?

答案1

  1. 当工作项“准备就绪”时,“调度程序”应动态启动“工作程序”Docker 映像。

现在,许多 Kubernetes 功能都是使用自定义资源内置的,这使得 Kubernetes 更加模块化。自定义资源允许您存储和检索数据,但当您将其与 结合使用时custom controller,自定义资源可提供真正的declarative API

对于你的任务,你想检查操作符模式 它是自定义资源和自定义控制器的组合。

你的 Operator 将必须关注你的work item状态,一旦准备就绪,它就会触发 Kubernetes Job,运行你的 DockerWorker镜像直至完成。

值得一提的是,你可以使用去客户端或者python 客户端访问 Kubernetes RESTful API 接口。client-go是一个用于开发 K8s 自定义控制器的非常强大的库。

欲了解更多官方支持的客户端列表,请访问官方文档

ClusterAutoscaler当您需要运行一项作业时,可以使用此功能来扩展 Kubernetes 集群,然后在作业完成时缩小集群。

如果你想了解更多关于运营商的信息

或者,您可能希望研究某种 CI/CD 调度程序,例如 Jenkins。以下是一些使用 jenkins 的 kubernetes 的很​​好示例:

但是如果您正在寻找类似消息队列的东西来管理任务而不是 Jenkins,将其与 Deployments 和 StatefulSets 放在同一个 Kubernetes 集群中可能会更方便。

这里有更多关于消息队列管理的信息:

最后一个小比较Kubernetes 和 Docker 之间的比较可以让你更深入地了解哪一个更适合你。

相关内容