Kubernetes是否均匀分布在ec2集群中?

所以,我试图通过kubernetes,docker和AWS ecs来理解CPU和虚拟机的分配。 这看起来正确吗?

  1. 在本地,运行“docker撰写”与一些服务:
    每个容器都被添加到单个Docker Machine VM中。 您可以从该单个VM分配CPU份额。

  2. 运行ECS的AWS从Docker生成组成:
    每个容器(全部)被添加到一个ec2虚拟机中。 您可以从该单个VM分配CPU份额。 除非您手动将“添加实例”添加到您的应用程序,否则部署到5个ec2实例的集群的事实并没有什么不同。 你的5个容器将共享1 ec2。

  3. AWS,运行kubernetes,使用复制控制器和服务yamls:
    每个获取容器分布在你的kubernetes集群中的所有ec2实例之间?????

如果我启动一个由5个ec2实例组成的集群,然后部署5个复制控制器/服务,它们是否实际上分布在ec2的? 这似乎与ECS和本地开发有很大的不同。 只是想获得正确的事实。

这里是你的不同问题的答案:

1>是的你是对的,你有一个单一的虚拟机,你运行的任何容器将从这个虚拟机获得CPU共享。 您也可以select产卵群集并尝试。 Docker为通过覆盖networking连接的容器组成的支持群组分布在多个vms上。

2>是的,你在一个任务中定义的容器将在同一个ec2实例中结束。 当您启动任务的多个实例时,任务将分散到集群的实例部分。 非任务应具有大于您的一个ec2实例上可用的最大资源的资源需求。

3> Kubernetes在许多方面比ECS更进化,但在集装箱分布的情况下,它的工作原理类似于ECS。 Kubernetes荚相当于一个ECS任务。 哪个是一个或一组容器在一个虚拟机上共存。 在kubernetes中,你也不能让一个pod需要的资源更多的是你的下一个计算资源的最大可用资源。

在所有这三种情况下,当部署一个大型容器或一个容器时,您都受到资源下方可用的最大容量的约束。

您不应将Docker平台等同于VM创build和pipe理平台。 所有这些docker平台都希望您定义适合虚拟机的任务,并要求您在需要时通过更多任务数量进行水平缩放。 Kubernetes提供了服务发现function,可以使用DNS查找将请求无缝路由到部署的容器。 你将会用swarm和ecs来build立自己的服务发现。 CONSUL,EUREKA等都是您可以使用的工具。