【问题标题】:Containerisation and Orchestration which Tool to use and why容器化和编排使用哪个工具以及为什么
【发布时间】:2018-09-15 00:33:36
【问题描述】:

披露:

  • 我对容器化和编排工具有几个问题 现已上市。
  • 我曾在 docker swarm 上工作过, Kubernetes 和 Elastic Bean Stalk。

问题:我想自动扩展,而不必处理我不必担心实例扩展的 ec2 实例。我知道 GKE 提供了这一点,但我想坚持使用 AWS。我可以在仪表板上根据请求、内存、CPU 定义缩放触发器的系统(与 elastic-beanstalk 相同,但我需要运行多个服务。所有服务将具有不同的缩放触发器)。根据我的阅读,一个常见的事情是 kubernetes 和 ECS 是我必须基于 cloud-watch 事件编写脚本。


Q.1:对于 Docker Swarm:

当我必须为我的经理提供超过 1 个虚拟机(由 docker-machine 创建)作为工作人员时,Docker Swarm 如何更好地平衡负载和自动扩展?

我的观点:

  • 这在成本方面并不好,因为无论如何我都必须为此付费 2 实例。
  • 当存在低 加载。
  • 我认为除了手动运行的脚本之外不会有 此处可进行任何自动缩放。
  • 我将在这里管理一个 docker-compose.yml。

Q.2:对于 Kubernetes:

Kubernetes 是否在实例级别上扩展?

我的观点:

  • Kubernetes 提供自动缩放选项(如水平缩放 等)但这一切都发生在服务水平上,最后,会有 是多个 pod 和容器
  • 据我所知,一切都会发生 在由 Kops 管理的 Kubernetes 集群中,如果它在实例级别上扩展,它会如何做呢?因为它在 docker 中没有像 SWARM 这样的虚拟机概念。
  • 我将根据我的服务在此处管理多个 YAML 文件。

Q.3 对于 Elastic Bean Stalk:

如果 Elastic Bean Stalk 可以与 AutoScaling 和负载平衡一起管理我的整个容器化,那么上面 2 的需求量和使用效果如何?

我的观点:

  • Elastic Bean Stalk 现在更倾向于 Fargate 目前适用于所有区域。
  • 我在此过程中看到它通过提供基于我的服务的完整配置仪表板来提供完全控制。
  • 它将根据我的负载和自动缩放创建一个新实例。

我很困惑,无法说服那些对 Kubernetes 和 Docker Swarm 说不的人, 如果有人可以请向我提供有关在 AWS 上的生产中使用什么以及为什么使用的详细概述?因为即使知道上面的这些工具,我也不主要回答生产中的 AutoScaling 和 LoadBalancing。

上面列出的问题将 AWS 视为云部署平台,我也想让您知道,我有一个在 Docker Swarm 上成功运行的 docker-compose.yml 和 4 个用于 Kubernetes 的不同 YAML 文件,它们在 Minikube 上也很有效。

【问题讨论】:

    标签: docker kubernetes amazon-cloudformation docker-swarm amazon-elastic-beanstalk


    【解决方案1】:

    我很困惑,无法说服那些对 Kubernetes 和 Docker Swarm 说不的人,如果有人可以请向我提供有关在 AWS 生产中使用什么以及为什么使用的详细概述?

    您提供的三分之二的解决方案与平台无关,因此我们可以在不专注于 AWS 的情况下讨论它们。

    我推荐你使用 Kubernetes,我将在下面尝试解释原因。

    当我必须为我的经理提供超过 1 个虚拟机(由 docker-machine 创建)作为工作人员时,Docker Swarm 如何更好地平衡负载和自动扩展?

    Docker Swarm 是一个相对简单的平台,用于以非常简单的逻辑编排 Docker 应用程序。要实现基于节点的自动缩放,您应该使用一些外部工具(例如,在 AWS 中,您可以使用带有一些基于 CPU 负载规则的 Autoscale 组)。您将不得不添加一些自定义脚本来从 Docker Swarm 集群中添加和删除节点。所有这些都是可能的,但您需要自己开发。

    Kubernetes 是否在实例级别上扩展?

    是的,确实如此。 Kubernetes 可以使用cluster-autoscale 守护程序进行扩展,该守护程序可以在集群内运行,并根据包括自定义指标在内的多个指标自动扩展和缩减您的实例。您不必创建任何脚本,所有逻辑都已经实现,您只需要设置规则。

    如果 Elastic Bean Stalk 可以与 AutoScaling 和负载平衡一起管理我的整个容器化,那么 2 以上的需求怎么会这么多并且更好用?

    Elastic Beanstalk 是一种在 AWS 中运行应用程序的解决方案,但您会受到其功能的限制。是的,它可以为您做很多事情,但是如果您需要定制的东西或者您需要创建一个混合云解决方案 - 这不是一个选择。

    最后,我可以告诉你,使用 Kubernetes,你会得到:

    1. 大量文档和社区经验。
    2. 几乎所有内容的自动魔法,从自动缩放到 A/B 测试,以及自动签名 Let's Encrypt 服务认证。您将花费大量时间在 Docker Swarm 或 Elastic Beanstalk 中实现所有这些功能,其中一些在其他编排器中几乎是不可能的。
    3. 平台不可知论者。您可以迁移到任何平台(甚至是本地),只需对应用程序的配置进行最少的更改。 Docker Swarm 也几乎可以在任何地方工作,但功能较少。
    4. 还有很多其他的东西,用于调度、作业、应用程序分发、不同类型的卷等等。

    另外,我可以向您推荐一些 Kubernetes 模块和应用程序,它们对您(不仅是)AWS 有用。

    • Kube2iam 工具,它为您提供 AWS IAM 角色,将其直接分配给您的 pod,而不是实例。
    • Autoscaling 模块。
    • Cert-manager 生成 LetsEncrypt SSL 密钥。它具有针对 DNS 挑战的 Route53 集成。
    • Nginx-ingress 作为入口控制器,为您提供许多功能和最佳 Nginx 体验。
    • Kops。但你已经知道了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-29
      • 2013-05-19
      • 2018-04-10
      • 1970-01-01
      • 2023-03-16
      • 2017-10-27
      • 2019-05-19
      • 2019-09-12
      相关资源
      最近更新 更多