所以,我试图了解kubernetes,docker和AWS ecs的CPU和VM分配。 这看起来是对的吗?
在本地,正在运行" docker撰写"提供一些服务:
每个容器都被添加到单个Docker Machine VM中。您可以从该单个VM分配CPU份额。
AWS,运行ECS,由docker compose生成:
每个容器(所有容器)都被添加到单个ec2 VM中。您可以从该单个VM分配CPU份额。您部署到5个ec2实例的集群这一事实没有任何区别,除非您手动"添加实例"到你的应用程序。您的5个容器将共享1个ec2。
AWS,运行kubernetes,使用复制控制器和服务yamls:
每个get容器都分布在你的kubernetes集群中的所有ec2实例中?????
如果我启动5个ec2实例的集群,然后部署5个复制控制器/服务,它们是否会实际分布在ec2的?这似乎与ECS和当地发展有很大不同。只是想找到正确的事实。
答案 0 :(得分:1)
以下是您不同问题的答案:
1>是的,你是对的,你有一个虚拟机,你运行的任何容器都将从这个虚拟机获得cpu共享。您还可以选择生成群集群并尝试。 Docker为通过遍布多个虚拟机的覆盖网络连接的容器组成支持群。
2 - ;是的,在单个任务中定义的容器最终将在同一个ec2实例中。当您启动任务的多个实例时,任务将分布在群集的实例部分上。非任务的资源要求应大于您的某个ec2实例上可用的最大资源。
3> Kubernetes在很多方面比ECS更进化,但在容器分布的情况下,它的工作方式类似于ecs。 Kubernetes pod相当于一个ecs任务。哪个是在一个VM上共置的一个或一组容器。在kubernetes中,你也不能拥有一个pod需要的资源,而是在你的一个底层计算资源上可用的最大资源。
在所有这三种方案中,在部署大容器或pod时,您受到资源下可用的最大容量的约束。
您不应将docker平台等同于VM创建和管理平台。 所有这些docker平台都希望您定义适合VM的任务,并且需要您在需要时水平扩展以及更多任务计数。 Kubernetes提供服务发现,允许使用DNS查找将请求无缝路由到已部署的容器。您将使用swarm和ecs构建自己的服务发现。 CONSUL,EUREKA等是您可以使用的工具。