在我的之前的文章中,我首先说明了每个容器编排平台都有优缺点。在本文中,我将探讨 Kubernetes、Docker Swarm 和 AWS ECS(弹性容器服务)的优缺点。

Kubernetes

Kubernetes (K8s) 是一个开源系统,用于自动部署、扩展和管理容器化应用程序。

Kubernetes 以其为生产工作负载就绪的开源平台而自豪,为 Google 团队服务了 15 年。这解释了围绕这个特定工具的所有炒作。让我们看看它的优缺点:

优点

  • 供应商不可知论: Kubernetes 的畅销特性之一是它的开源性质。这使得它可以在任何云提供商上使用,并且不同的云提供商开始提供托管的 Kuberentes 服务。因此,很难忽视 Kuberentes 作为一种选择工具。

  • 监控: Kubernetes 具有自我监控功能,可用于获取 kubernetes 集群中资源的状态并挖掘非常具体的资源信息。使用 CLI、Kubernetes 仪表板等工具或第三方工具(如Prometheus以及Grafana)也非常容易,以全面监控您的工作负载集群。

  • API: Kubernetes 具有非常强大的 API,可以轻松与其他软件集成以创建强大的自动化。在撰写本文时,它还拥有 Go、Python、Java 和 Javascript 的客户端库。

  • 水平扩展: Kubernetes 支持在多个节点(机器)上运行集群。因此 Kubernetes 集群的增长能力是巨大的。

  • 自动推出和回滚: 这是 Kubernetes 的一项拯救生命的功能。一旦部署失败或超时,Kubernetes 会自动回滚部署,不会让您的应用程序使用者停机。

  • 跨节点的自动容器平衡: Kubernetes 根据为集群配置的可用资源以及 CPU 和内存请求,自动管理节点在集群节点之间的分布方式。

  • 配置: Kubernetes 允许使用 YAML 对资源进行声明式配置,这可以将您的资源配置作为代码进行管理。

  • 部署策略: Kubernetes 支持多种部署策略,可确保跨多个部署的应用程序可用性。它默认使用滚动更新。

缺点

  • 学习曲线: 尽管 Kubernetes 用途广泛,但学习它的所有概念及其设置方式可能非常具有挑战性。

  • 易于设置: 托管 Kubernetes 服务,如 Elastic Kubernetes Service (EKS)、DigitalOcean Kubernetes、Google Kubernetes Engine (GKE) 以及其他工具使这变得更加容易,但仍然可以在裸机上设置 Kubernetes具有挑战性的。

  • 成本: 对于某些应用程序,Kubernetes 可能是一种更昂贵的解决方案。

码头工人群

Docker Swarm 是 Docker 的容器编排解决方案。它允许将复制的 docker 容器作为服务跨组成 Swarm 的集群 Docker 引擎运行。

优点

  • 学习曲线: 一旦您了解了 Docker 的工作原理,就可以轻松启动 docker swarm,因为它使用相同的 Docker CLI 工具。

  • 易于设置和成本: 与 Kubernetes 相比,Docker Swarm 更易于设置且相对便宜。

  • 配置: Docker Swarm 堆栈文件使用具有额外属性的类似 docker-compose YAML 配置,对于具有 docker-compose 知识的任何人来说都应该是直截了当的。

  • 水平缩放: Docker Swarm 支持创建具有多台机器的 swarm。这支持应用程序的水平缩放。

  • 简单性: Docker Swarm 有一个很容易掌握的小功能集。

缺点

  • 监控: Docker Swarm 上的监控不像其他解决方案那样直接。它需要一些工作来设置。

  • 部署策略: Docker Swarm 使用部署策略几乎无法控制部署。虽然,仍然可以使用一些智能技术。

  • 随机容器放置: 我发现有时跨 Docker 引擎的自动容器放置与其他解决方案一样最佳。虽然,这可以使用资源限制轻松管理。

  • 简单性: 有时需要更多的灵活性,在这种情况下,Docker Swarm 可能会感到受限。

AWS 弹性容器服务(ECS)

Amazon Elastic Container Service (Amazon ECS) 是一项完全托管的容器编排服务。

AWS 是一头野兽,当他们提供服务时,他们做得很好。我并不是说他们的服务是完美的,但它们非常可靠,AWS ECS 也不例外。

优点

  • 易于设置: ECS 集群可以在大约 5 分钟内设置完毕,因为它是一项托管服务。值得一提的是,托管 Kubernetes 服务也受益于这种易于设置。

  • **学习曲线:**我觉得ECS比较容易掌握(这个是相对的)

  • 与其他 AWS 服务集成: ECS 与 CloudWatch、弹性负载均衡器 (ELB)、Auto Scaling Groups (ASG)、CodeDeploy 等其他出色的 AWS 服务顺利集成。这使其成为一项非常强大的服务。

  • 无服务器产品: ECS 提供无服务器容器编排服务,称为Fargate。多么酷啊!?

缺点

  • 它仅在 AWS 上可用: ECS 是特定于供应商的,只能在 AWS 上使用。

  • 封闭源代码: 一些用户认为封闭源代码的服务是不利的。

以上就是我从经验中观察到的这些容器编排平台的优缺点,并不是这些平台能做什么或不能做什么的详尽清单。您可以使用您选择的任何工具,因为使用最佳工具的决定始终取决于使用它的上下文。

资源

  • criticalcase.com/blog/kubernetes-features-a..

  • us-east-2.console.aws.amazon.com/ecs/home?a..

  • docs.docker.com/engine/swarm

  • kubernetes.io

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐