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

Does Kubernetes evenly distribute across an ec2 cluster?

所以,我试图了解 CPU 和 VM 与 kubernetes、docker 和 AWS ecs 的分配。 这看起来对吗?

  1. 在本地,运行 "docker compose" 有一些服务:
    每个容器都被添加到单个 Docker 机器虚拟机中。您可以从此单个 VM 分配 CPU 份额。

  2. AWS,运行 ECS,由 docker compose 生成:
    每个容器(所有容器)都被添加到单个 ec2 VM 中。您可以从该单个 VM 分配 CPU 份额。部署到 5 个 ec2 实例的集群这一事实没有任何区别,除非您手动 "add instances" 到您的应用程序。您的 5 个容器将共享 1 个 ec2。

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

如果我启动一个由 5 个 ec2 实例组成的集群,然后部署 5 个复制控制器/服务,它们实际上会分布在 ec2 上吗?这似乎是与 ECS 和本地开发的主要区别。只是想了解正确的事实。

以下是您不同问题的答案:

1> 是的,你是对的,你有一个虚拟机,你 运行 的任何容器都将从这个虚拟机获得 cpu 份额。您还可以选择生成 swarm 集群并进行尝试。 Docker 为通过分布在多个虚拟机上的覆盖网络连接的容器编写支持群。

2> 是的,您在单个任务中定义的容器将在同一个 ec2 实例中结束。当您启动多个任务实例时,任务会分布在集群的实例部分。没有任务的资源要求应该大于您的一个 ec2 实例上可用的最大资源。

3> Kubernetes 在许多方面比 ECS 更先进,但在容器分发的情况下,它的工作原理类似于 ecs。 Kubernetes pod 相当于一个ecs task。这是一个或一组容器并置在单个 VM 上。在 kubernetes 中,你也不能让 pod 需要的资源超过你的底层计算资源之一的最大可用资源。

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

您不应将 docker 平台等同于 VM 创建和管理平台。 所有这些 docker 平台都希望您定义适合 VM 的任务,并要求您在需要时使用更多任务数进行水平扩展。 Kubernetes 带有服务发现功能,它允许使用 DNS 查找将请求无缝路由到已部署的容器。您将使用 swarm 和 ecs 构建自己的服务发现。 CONSUL、EUREKA 等都是您可以使用的工具。