Container Orchestration,用于根据用户操作配置单个容器

时间:2016-12-13 16:12:06

标签: docker kubernetes coreos docker-swarm orchestration

我是Docker业务流程的新手,也是管理一大批容器的新手。我想构建一个应用程序,在用户运行命令时为其提供容器。什么是最好的工具和最好的方法来实现这一目标?

我打算让一个CoreOS服务器池来运行容器,我想象调度程序有一个我可以调用来创建容器的API。

我在Nomad,Kubernetes,Docker Swarm等中看到的大部分内容都是如何配置多个容器集群,它们都在做同样的事情。我希望能够基于用户命令创建单个容器,然后能够与该容器上的API通信。有人有这方面的经验吗?

2 个答案:

答案 0 :(得分:1)

我会看看Kubernetes + Jobs API(短暂的)或Deployments(长寿)

我不确定命令的确切含义,但我会假设它由CLI make-dev触发某种开发环境。

  1. 用户触发器make-dev,它会向位于Jobs API前面的应​​用发送webhook,理想情况下会进行速率限制和/或身份验证。
  2. 您的应用程序接受命令,完整性检查它,然后触发作业/部署请求+ Ingress rule + Service
  3. Kubernetes将在您的机队中安排它
  4. 您的应用程序等待pod启动,然后返回API的地址,其中包含唯一标识符(入口规则中的相同内容),如devclusters.com/foobar123
  5. 用户现在可以在该地址访问他们的服务。内部Kubernetes使用入口和服务将请求路由到您的pod
  6. 这应该可以很好地扩展,如果你的不同环境使用相同的基本容器图像,它们应该非常快。

    插件:如果你想要一个简单的CoreOS + Kubernetes集群和一个用户界面试试https://coreos.com/tectonic

答案 1 :(得分:0)

  

我打算让一个CoreOS服务器池来运行容器,我想这个调度程序有一个我可以调用来创建容器的API

kubernetes附带了一个RESTful API,您可以使用它直接在群集中创建pod(kubernetes中包含一个或多个容器的工作单元)。

命令行实用程序kubectl也通过api以完全相同的方式与集群交互。目前有golang,Java和Python编写的客户端库,其他人正在帮助与集群进行通信。

如果您以后想要更高级别的抽象来管理pod,更新它们并管理它们的生命周期,那么查看其中一个控制器(replicaset,复制控制器,部署,statefulset)应该会有所帮助。