5 个回答
容器编排工具提供容器的调度,配置,监控,版本管理,健康检查,服务发现等功能。常见的工具有 Kubernetes , Mesos (DC/OS) , Swarm and Nomad .
Kubernetes是最流行的,基于K8S有很多产品,如Rancher2,云上产品如EKS等。
Mesos主要用在Hadoop,Spark等大数据平台
Swarm是Docker原生的容器编排工具,使用Docker_Compose通过Yaml文件创建服务。
本文将会逐一介绍 十六种容器编排工具和服务 ,许多公司正使用它们作为重要的开发工具。
Docker、Podman 和 Buildah 这样的容器化解决方案为容器化和传送(ship)应用程序代码提供了极大的灵活性。但是如果要部署复杂的应用程序,实现基础设施的自动化,我们还需要一个好的容器编排工具。
在部署架构复杂的应用程序时,我们必须要为容器编排制定合适的工作流。使用合适的 DevOps 工具,我们将大大缩短应用的交付时间。
容器化工具需要依据应用程序所需要资源进行扩展和缩减。
为了满足业务需求,我们需要一个好的框架来有效管理和调度容器。
在选择容器编排工具和托管服务时,我们需要考虑以下几项关键要素:
- 网络
- 高可用性
- 易于部署和维护
- 可扩展性
- 服务发现
- 安全与合规
- 支持(社区和企业)
- 管理费用
接下来让我们看看目前最好的几种容器编排工具。
一、容器编排和集群工具
1、Kubernetes
Kubernetes 是一种开源、开箱即用的容器编排工具。它建立在一个优秀的调度器和资源管理器之上,以一种更高效和高度可用的方式来部署容器。
Kubernetes 已成为许多公司、组织的容器编排工具。
CNCF 的 Cloud Native Landscape 报告显示,管理容器的工具已经多达一百多种,但 其中 89% 的工具本质上依旧是不同形式的 Kubernetes。
kubernetes 项目目前由云原生基金会进行维护。Kubernetes 的贡献者遍布全球,从大型组织到个人开源开发人员。
以下是 Kubernetes 的高级架构
Kubernetes 提供了许多原生 Docker 工具不提供的功能。此外,使用 kubernetes很容易上手。
说明: Kubernetes 在 v1.20 版本之后删除了 Docker 容器运行时,但这并不意味着 docker 镜像在 kubernetes 中不起作用。本质上,只是底层容器运行时从 Docker 转移到使用CRI 的运行时
2、 Openshift
Openshift 是一个 建立在 kubernetes 之上 的容器编排工具。
Openshift 目前有两个版本,分别是社区版,以及企业版。开源版和企业版的 Openshift 项目目前是由 Redhat 公司在维护。
除了有 Kubernetes 的核心功能外, Openshift 还为容器管理和编排提供了开箱即用的组件。
以下是 Openshift 的宏观概述:
此外,Openshift 现在可作为 AWS 云上的托管服务使用。
下图全面展现了 Openshift 的主要功能:
3、 Hasicorp Nomad
Nomad 是 Hashicorp 的一个支持容器的编排平台。
在大规模管理应用程序方面,Nomad 与 Kubernetes 有着相似的理念。但是,Nomad 支持容器和非容器工作负载。
Nomad 很好地集成了其他 Hashicorp 工具,比如 Consul、Vault 和 terraform。
Nomad 的 主要功能有:
- 容器编排
- 非容器化应用程序编排。
- 与 Consul 的自动化服务网络。
4、 Docker Swarm
Docker 的生态系统由从开发到生产部署框架的各种工具组成。
在这些工具中,docker swarm用于集群管理。docker-compose、swarm、overlay network 和一个很好的服务发现工具(如 etcd 或 consul)的组合可用于管理 Docker 容器集群。
与其他开源容器集群管理工具相比,Docker swarm 在功能方面仍需要再更加成熟。
但是考虑到众多的 docker 贡献者,docker swarm 很快就会拥有其他工具所拥有的最佳功能。Docker 已经做好了在生产中使用 docker swarm 的计划。
5、Rancher
Rancher 是一个开源的容器编排工具。
在核心架构上,Rancher 使用 kubernetes 作为它的容器编排器。
Rancher 提供以下功能:
- 支持本地、云和边缘的集中式集群配置。
- 通过从单个控制台控制集群操作来简化 Kubernetes 操作。
- 通过集中的用户策略实现集中的 Kubernetes 安全。
- 使用原生 kubernetes API或 kubectl 实用程序进行直观的工作负载管理。
- 使用 Prometheus、Fluentd 和 Grafana 进行集成监控和日志记录。
- 支持管理 Amazon EKS 集群和 Google Kubernetes Engine (GKE)
- 全局应用程序目录,使应用程序安装和升级更容易。
6、 Mesos
Mesos 同样是一种集群管理工具,可以十分高效地管理容器编排。
它是由 Twitter 为其基础设施创建的,随后被开源。目前许多大型公司都使用着 Mesos,比如 eBay、Airbnb 等。
Mesos 不是容器的专用工具,要知道我们还可以将其用于虚拟机或物理机集群上,来运行容器以外的工作负载(大数据等)。Mesos 有一个名为 Marathon 的高效框架,用于在 Mesos 集群上部署和管理容器。
我们实际上可以在 Mesos 集群上运行 Kubernetes 集群。
二、托管容器编排工具
目前已经有许多基于云的托管容器编排工具,使用它们我们可以避免复杂的集群设置和管理开销,只需关注应用程序即可。
以下是十个托管服务。
1、 谷歌容器引擎(GKE)
GKE 是谷歌云上的一项高度可扩展的托管的容器服务。GKE 在后端使用了 kubernetes,在GKE 上,我们可以使用所有的 kubernetes 功能。只需单击几下即可部署 GKE 集群。
GKE 具有自动驾驶仪等功能,从而降低运营成本。
2、Cloud Run
Cloud Run是一种以无服务器方式运行容器的托管服务。用户不必创建集群,只需在 cloud run 上部署容器,谷歌将负责扩展和管理它。
3、 AWS Elastic Kubernete 服务 (EKS)
EKS 是来自 AWS 的托管 Kubernetes 集群服务,类似于 GKE
4、 亚马逊 EC2 容器服务 (ECS)
ECS 是 AWS 提供的一项用于管理容器集群的服务。
ECS 并不基于 kubernetes。ECS 是 AWS 管理的专有容器集群管理和调度服务。用户唯一需要担心的是供应商锁定问题。
5、AWS Fargate
AWS farmgate 是一个类似的无服务器环境,用于运行容器。
在这里用户可以选择后端基础设施为 EKS 或者 ECS。此外,用户不必担心后端扩展,AWS 将负责管理和扩展。
6、Azure AKS 服务
Azure Kubernetes 服务是来自 Azure 的托管高可用性 Kubernetes 服务。
7、Azure 托管 Openshift 服务
现在,公共云提供商正在将 Openshift 作为一项服务。Azure 与 Redhat 合作,拥有托管 Openshift 的服务。
8、 Azure Container Instances
Azure Container Instances 是一种托管的无服务器容器部署服务,类似于 cloud run 和 Fargate。
9、Digital Ocean Kubernetes Service
digital ocean提供托管的 Kubernetes 服务,用于部署基于容器的应用程序。
10、 Red Hat OpenShift Online
Openshift online 是 Redhat 的 PaaS 产品之一。用户通过此服务,可以使用 openshift 在云上部署应用程序。因为它是一个纯粹的 PaaS 服务,所以用户不必管理集群。
三、托管与自托管容器编排工具
在托管和自托管容器编排工具之间进行选择,这取决于组织的决定。
以下是托管解决方案与自托管解决方案的一些优势与劣势:
托管容器编排工具
好处 | 缺点 |
一键配置 | 无法控制控制平面。 |
与原生云平台服务集成 | 您需要坚持使用云提供商提供的选项。 |
更少的管理开销。 | |
高可扩展性 | |
高可用性 | |
24/7 技术支持 | |
企业级安全与合规 | |
自托管容器编排工具
好处 | 缺点 |
完全控制平台并提高灵活性 | 为集群配置定制自动化的巨大工程努力 |
平台支持需要专门的支持团队 | |
需要自定义缩放设置 | |
需要团队中的主题专家负责集群的设计、设置、升级和维护。 |
使用托管服务,用户可以将更多的精力集中在应用程序上,而不是花费时间和精力来管理平台。
所以建议使用托管编排平台,除非尝试构建一个通过解决方案来为其他客户提供服务。
四、容器编排工具常见问题解答
Q: Kubernetes 和 Openshift 有什么区别?
A: Kubernetes 是由云原生基金会维护的开源容器编排工具,而 Openshift 容器平台构建在 Kubernetes 核心之上,并由 Redhat 维护。
Q: 如何选择容器编排工具?
A: 这个问题没有唯一的答案。选择容器编排工具取决于多种因素,例如团队规模、预算、可用的中小企业和应用程序兼容性以及安全合规性。
五、结论
选择容器编排工具或服务完全取决于用户的需求和应用程序的复杂性。此外,服务网格的采用也在增加。甚至大多数托管 Kubernetes 服务提供商也为 Istio 等服务网格工具提供插件。
许多组织正使用着上述工具和服务,借助来自云原生基础的大量工具,管理容器化应用程序变得越来越容易。