14个用于DevOps的容器编排工具

让我们来谈谈市场上一些热门的容器编排工具。

什么是容器编排?

Docker这样的容器平台在当今非常流行,用于基于微服务架构的应用程序打包。容器可以高度可扩展,并可以按需创建。虽然对于少量容器来说这是很好的,但是想象一下如果你有数百个容器。

当数量随需求动态增加时,管理容器的生命周期和管理变得非常困难。

容器编排通过自动化容器的调度、部署、扩展性、负载平衡、可用性和网络等来解决这个问题。容器编排是容器和服务的生命周期的自动化和管理。

这是一种在规模上管理和组织多个容器和微服务架构的过程。

幸运的是,市场上有许多容器编排工具可供选择。

让我们来探索一下它们吧!

Kubernetes

你猜对了,不是吗?

Kubernetes是一个开源平台,最初由谷歌设计,现在由Cloud Native Computing Foundation维护。Kubernetes支持声明性配置和自动化。它可以帮助自动化容器化工作负载和服务的部署、扩展和管理。

由Kubernetes.io提供的图像

Kubernetes API帮助用户、集群组件和外部第三方组件建立通信。Kubernetes控制平面和节点运行在一组节点上,共同形成集群。应用工作负载由一个或多个Pod组成,运行在工作节点上。控制平面管理Pod和工作节点。

像Babylon、Booking.com、AppDirect这样的公司广泛使用Kubernetes

特性

  • 服务发现和负载均衡
  • 存储编排
  • 自动化部署和回滚
  • 水平扩展
  • 密钥和配置管理
  • 自愈
  • 批量执行
  • IPv4/IPv6双栈
  • 自动装箱

想学习Kubernetes吗?查看这些learning resources

OpenShift

Redhat提供OpenShift作为Platform as a Service(PaaS)。它有助于在混合云环境中自动化应用程序的构建、部署和管理,提供安全、可扩展的资源。它为构建、部署和管理容器化应用程序提供了企业级平台。

由Openshift提供的图像

它构建在Redhat企业Linux和Kubernetes引擎上。Openshift具有各种功能,可以通过UI和CLI来管理集群。Redhat以另外两个变体提供Openshift,

  • Openshift Online – 以软件即服务(SaaS)的形式提供
  • OpenShift Dedicated – 以托管服务的形式提供

Openshift Origin(Origin Community Distribution)是一个开源的上游社区项目,用于OpenShift Container Platform、Openshift Online和OpenShift Dedicated。

Nomad

Nomad是一个简单、灵活、易于使用的工作负载编排器,可在本地和云上扩展部署和管理容器化和非容器化应用程序。Nomad作为一个单一的二进制文件运行,资源占用很小(35MB),支持macOS、Windows和Linux。

开发人员使用声明性基础设施即代码(IaC)来部署他们的应用程序,并定义应用程序的部署方式。Nomad可以自动从故障中恢复应用程序。

由Nomad提供的图像

Nomad Orchestrate可以应用于任何类型的应用程序(不仅限于容器)。它为Docker、Windows、Java、VM等提供一流的支持。

特点

  • 简单可靠
  • 无需重写即可现代化传统应用程序
  • 轻松扩展规模
  • 经过验证的可伸缩性
  • 轻松实现多云
  • 与Terraform、Consul和Vault的本地集成

Docker Swarm

Docker Swarm 使用声明性模型。您可以定义服务的期望状态,Docker将维护该状态。Docker企业版已将Kubernetes与Swarm集成。Docker现在提供了选择编排引擎的灵活性。使用Docker引擎CLI创建一组Docker引擎,可以在其中部署应用程序服务。

由Docker提供的图像

Docker commands 用于与集群进行交互。加入集群的机器称为节点,Swarm管理器处理集群的活动。

Docker Swarm 由两个主要组件组成:

  • 管理器 – 管理器节点将任务分配给Swarm中的工作节点。基于Raft共识算法选择领导者。领导者处理Swarm的所有管理和任务编排决策。
  • 工作节点 – 工作节点接收来自管理器节点的任务并执行。

特点

  • 与Docker Engine集成的集群管理
  • 去中心化设计
  • 声明性服务模型
  • 扩展
  • 期望状态协调
  • 多主机网络
  • 服务发现
  • 负载均衡
  • 默认安全
  • 滚动更新

Docker Compose

Docker Compose 用于定义和运行相互协作的多容器应用程序。Docker-compose描述了共享软件依赖关系的互连服务组,并进行了编排和扩展。

您可以使用YAML文件(dockerfile)配置应用程序的服务。然后,使用docker-compose up命令,根据配置创建和启动所有服务。

docker-compose.yml看起来像这样:

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

您可以使用Docker Compose将应用代码分解为几个独立运行的服务,这些服务使用内部网络进行通信。该工具提供了用于管理应用程序整个生命周期的CLI。Docker Compose传统上专注于开发和测试工作流程,但现在他们正在专注于更多面向生产的功能。

Docker Engine可以是使用Docker Machine提供的独立实例,也可以是整个Docker Swarm集群。

特点

  • 在单个主机上的多个隔离环境
  • 在创建容器时保留卷数据
  • 仅重建已更改的容器
  • 变量和在环境之间移动组合

MiniKube

Minikube允许用户在本地运行Kubernetes。借助Minikube,您可以在个人计算机上的单节点Kubernetes集群中本地测试应用程序。Minikube集成了对Kubernetes Dashboard的支持。

Minikube运行最新的稳定版Kubernetes,并支持以下功能:

  • 负载均衡
  • 多集群
  • 持久卷
  • NodePorts
  • ConfigMaps和Secrets
  • 容器运行时:Docker、CRI-O和containered
  • 启用CNI(容器网络接口)

Marathon

Marathon是用于Apache Mesos的框架,具有编排应用程序和框架的能力。

Apache Mesos是一个开源的集群管理器。Mesos是Apache的一个项目,可以运行容器化和非容器化的工作负载。Mesos集群的主要组件包括Mesos Agent节点、Mesos Master、ZooKeeper和框架 – 框架与主节点协调以将任务调度到代理节点上。用户使用Marathon框架来调度作业。

Marathon调度器使用ZooKeeper定位当前的主节点以提交任务。Marathon调度器和Mesos主节点都有运行的备用主节点以确保高可用性。客户端使用REST API与Marathon进行交互。

功能

  • 高可用性
  • 有状态应用程序
  • 漂亮而强大的用户界面
  • 约束
  • 服务发现和负载均衡
  • 健康检查
  • 事件订阅
  • 指标
  • REST API

Cloudify

Cloudify是一个开源的云编排工具,用于容器和微服务的部署自动化和生命周期管理。它提供了按需集群、自动修复和基础设施级别的扩展等功能。Cloudify可以管理容器基础设施并编排运行在容器平台上的服务。

它可以轻松集成Docker和基于Docker的容器管理器,包括以下内容。

  • Docker
  • Docker Swarm
  • Docker Compose
  • Kubernetes
  • Apache Mesos

Cloudify可以帮助创建、修复、扩展和拆除容器集群。容器编排是提供可扩展和高可用基础设施的关键,容器管理器可以在其上运行。Cloudify提供了跨平台编排异构服务的能力。您可以使用CLI和Cloudify Manager部署应用程序。

Rancher

Rancher是一个使用容器编排(称为cattle)的开源平台。它允许您利用诸如Kubernetes、Swarm、Mesos之类的编排服务。Rancher提供了所需的软件来管理容器,这样组织就不需要使用一组不同的开源技术从头构建容器服务平台。

Rancher 2.x允许管理运行在用户指定提供商上的Kubernetes集群。

开始使用Rancher是一个两步过程。

准备Linux主机

准备一个64位Ubuntu 16.04或18.04(或另一个受支持的Linux发行版)的Linux主机,并拥有至少4GB内存。在主机上安装支持的Docker版本。

启动服务器

要安装和运行Rancher,请在主机上执行以下Docker命令:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Rancher用户界面允许管理数千个Kubernetes集群和节点。

Containership

Containership用于实现多云Kubernetes基础架构的部署和管理。它可以在公共、私有云和本地环境中灵活运行,只需要使用一个工具。它可以在所有主要的云提供商中提供Kubernetes集群的规划、管理和监控。

Containership使用了云原生工具,如Terraform用于规划,Prometheus用于监控,和Calico用于网络和策略管理。它是建立在原生的Kubernetes之上的。Containership平台提供了直观的仪表盘,以及强大的REST API,用于复杂的自动化。

特点

  • 多云仪表盘
  • 审计日志
  • GPU实例支持
  • 非中断升级
  • 可调度的主节点
  • 集成度量
  • 实时日志
  • 零停机部署
  • 持久性存储支持
  • 私有注册表支持
  • 工作负载自动扩展
  • SSH密钥管理

AZK

AZK是一个用于通过manifest文件(Azkfile.js)管理开发环境的开源编排工具,它帮助开发人员安装、配置和运行常用的用于开发使用不同开源技术的Web应用程序的工具。

AZK使用容器而不是虚拟机。容器类似于虚拟机,具有更好的性能和更低的物理资源消耗。

Azkfile.js文件可以重复使用以添加新组件或从头开始创建新组件。它可以共享,以确保不同程序员机器上的开发环境完全一致,并减少部署中出现错误的机会。

GKE

GKE在Google Cloud Platform上为容器应用编排提供了一个完全托管的解决方案。GKE集群由Kubernetes提供支持。您可以使用Kubernetes CLI与集群进行交互。可以使用Kubernetes命令来部署和管理应用程序,执行管理任务,设置策略,并监视已部署工作负载的健康状况。

图片由GCP提供

Google Cloud还提供了与GKE集群一起使用的高级管理功能,如Google Cloud的负载平衡、节点池、节点自动扩展、自动升级、节点自动修复、日志记录以及使用Google Cloud的运营套件进行监控。

Google Cloud提供了CI/CD工具,帮助您构建和提供应用程序容器。您可以使用Cloud Build从各种源代码存储库构建容器映像(如Docker),并使用容器注册表存储容器映像。

GKE是一个企业级的解决方案,具有预建的部署模板。

想要学习GKE吗?请查看这个beginner course

AKS

AKS是Azure提供的一个完全托管的Kubernetes服务,提供无服务器Kubernetes、安全性和治理。AKS管理您的Kubernetes集群,并允许您轻松部署容器化应用程序。AKS自动配置所有Kubernetes主节点和节点。您只需要管理和维护代理节点。

图片由Azure提供

AKS是免费的;您只需为集群内的代理节点付费,而不需为主节点付费。您可以在Azure门户中或通过编程方式创建AKS集群。Azure还支持其他功能,如高级网络、Azure Active Directory集成和使用Azure Monitor进行监控。

AKS还支持Windows Server容器。可以从Azure Monitor监视其集群和已部署应用程序的性能。日志存储在Azure Log Analytics工作区中。

AKS已通过Kubernetes的认证。

AWS EKS

AWS EKS是一个完全托管的Kubernetes服务。AWS允许您使用AWS Fragrate运行您的EKS集群,它是一个容器的serverless compute。Fragrance消除了预留和管理服务器的需求,允许按资源和应用程序付费。

AWS允许在EKS上使用额外的功能,如Amazon CloudWatch,Amazon Virtual Private Cloud(VPC),AWS身份,自动扩展组和访问管理(IAM),监视,扩展和负载均衡应用程序。EKS与AWS App Mesh集成,并提供Kubernetes本地体验。EKS运行最新的Kubernetes,经过认证的Kubernetes符合性。

结论

最后,希望上述列表能够对各种容器编排工具有一个公正的理解,现在根据使用情况选择最佳工具将更容易。

接下来,找出Kubernetes Management Software

类似文章