啦啦啦啦啦 2020-07-29
Kubernetes是当下最流行的容器编排平台,不管是生产环境的采用率,还是云原生生态都很强大。但Kubernetes并不是企业唯一的选择,还有不少的容器编排工具供企业选择,这些容器编排工具适合不同的基础架构环境。其中不少,已经获得了用户极高的认可和采用,比如OpenShift、AWS EKS、Docker Swarm等等。本文就帮大家梳理一下这些容器编排平台。
OpenShift
红帽的OpenShift容器平台即服务(PaaS),是目前混合云环境中的安全和可扩展资源上的自动化应用程序。它提供了用于构建,部署和管理容器化应用程序的企业级平台。
它基于红帽企业版Linux和Kubernetes引擎而构建。Openshift具有多种功能,可通过UI和CLI管理集群。此外,红帽还提供了Openshift的两个变种,Openshift Online是软件即服务产品;OpenShift Dedicated是托管服务产品。
Openshift Origin((Origin Community Distribution))是一个开源上游社区项目,用于Openshift容器平台Openshift Online和OpenShift Dedicated。
Nomad
Nomad是一个简单、灵活且易于使用的工作负载协调器,可在内部部署和云范围内大规模部署和管理容器和非容器化应用程序。Nomad以单个二进制文件的形式运行,占用资源少仅35MB,并在macOS,Windows和Linux上可用。
用户可使用声明性基础架构代码(IaC)来部署其应用程序,并定义应如何部署应用程序。Nomad会自动从故障中恢复应用程序。
Nomad组织了任何类型的应用程序(不仅仅是容器)。它为Docker、Windows、Java、VM等提供了一流的支持。
此外,Nomad可使旧版应用程序现代化,而无需重写;可轻松实现多云,与Terraform,Consul和Vault的本机集成。
Docker Swarm
Docker Swarm使用声明性模型,可以定义服务的所需状态,Docker将维护这个状态。Docker企业版本已将Kubernetes与Swarm集成在一起,而且Docker现在提供了编排引擎选择的灵活性。 Docker engine CLI用于创建大量Docker引擎,可在其中部署应用程序服务。
Docker命令用于与集群进行交互。加入集群的机器称为节点,而Swarm处理集群的活动。
Docker Swarm由两个主要组件组成,Manager管理器节点将任务分配给集群中的Worker Node。根据Raft一致性算法选举领导者。领导者负责处理所有集群管理和集群的任务编排决策。Worker Node从从管理节点接收任务并执行它们。
Docker Swarm的功能也很强大,它与Docker Engine集成进行集群管理;采用分布式设计;声明式服务模型;也包括如多主机联网、服务发现、负载均衡、滚动更新等功能特征。
Docker Compose
Docker Compose用于定义和运行可协同工作的多容器应用程序。Docker Compose描述了相互共享的服务组,这些服务组共享软件依赖关系,并被编排和缩放。
可以使用YAML文件(dockerfile)配置应用程序的服务。然后,使用docker-compose up命令,从配置中创建并启动所有服务。
也可以使用Docker Compose将应用程序代码分解为几个独立运行的服务,这些服务使用内部网络进行通信。它提供了用于管理应用程序整个生命周期的CLI。传统上,Docker Compose一直定位在于开发和测试工作流,但现在更多面向生产环境的功能。
Docker Engine可以是配备有Docker Machine或整个Docker Swarm集群的独立实例。
主要特征有单个主机上的多个隔离环境;创建容器时保留卷数据;仅重新创建已更改的容器;变量和环境之间的合成移动等。
Minikube
Minikube允许用户在本地运行Kubernetes。使用Minikube,可以在个人计算机上的单节点Kubernetes集群内在本地测试应用程序。Minikube对Kubernetes仪表板提供了集成支持。
Minikube运行Kubernetes的最新稳定版本,并支持负载均衡、多集群、持久卷、节点端口、容器运行时包括Docker、CRI-O和containered,可启用CNI等等。
Marathon
Marathon适用于Apache Mesos,具有协调应用程序和框架的能力。
Apache Mesos是一个开源集群管理器。Mesos是Apache的一个项目,能够同时运行容器化和非容器化工作负载。Mesos集群中的主要组件是Mesos代理节点,Mesos主节点,ZooKeeper和框架——框架与主节点协调,将任务调度到代理节点上。用户与Marathon框架交互以安排作业。
Marathon调度程序使用ZooKeeper来定位当前的主程序以提交任务。Marathon调度程序和Mesos主服务器都运行从服务器,以确保高可用性。客户端使用REST API与Marathon交互。
Marathon的优势主要体现在高可用性,支持有状态应用,用户界面很友好,支持服务发现和负载均衡,健康检查,以及REST API等。
Cloudify
Cloudify是开源的云编排工具,用于容器和微服务的部署自动化以及生命周期管理。它提供了一些功能,如按需集群,自动修复以及在基础架构级别进行扩展。Cloudify可以管理容器基础架构,并协调在容器平台上运行的服务。
它可以轻松地与Docker和基于Docker的容器管理器集成,包括Docker Swarm、Docker Compose、Kubernetes和Apache Mesos。
Cloudify可以帮助创建,修复,扩展和拆除容器集群。容器编排是提供可伸缩和高可用性基础设施的关键,容器管理器可以在其上运行。Cloudify提供了跨平台协调异构服务的能力。可以使用CLI和Cloudify管理器部署应用程序。
Rancher
Rancher是也是一个开源的容器编排平台。它能够利用Kubernetes,Swarm,Mesos等编排服务。Rancher提供了管理容器所需的软件,因此企业无需使用一套独特的开源技术从头开始构建容器服务平台。
Rancher 2.x允许管理运行在客户指定的提供商上的Kubernetes集群。Rancher用户界面允许管理数千个Kubernetes集群和节点。
Containership
Containership主要实现多云Kubernetes基础架构的部署和管理。通过单个工具可以灵活地在公有,私有云和本地环境中进行操作。它使用户能够跨所有主要云提供商配置,管理和监控Kubernetes集群。
Containership是使用云原生工具构建的,例如Terraform进行配置,Prometheus进行监控,以及Calico进行网络和策略管理。它建立在vanilla Kubernetes版本之上。Containership平台提供直观的仪表板,以及用于复杂自动化的强大REST API。
AZK
AZK是一个通过清单文件(Azkfile.js)用于开发环境的开源编排工具,该文件可帮助开发人员安装,配置和运行常用工具,来使用不同的开源技术开发Web应用程序。
AZK使用容器而不是虚拟机。容器就像虚拟机一样,具有更好的性能和更低的物理资源消耗。
可以重用Azkfile.js文件来添加新组件或从头创建新组件。它可以被共享,这确保了不同程序员机器中的开发环境之间的完全平衡,并减少了部署期间出现错误的机率。
AWS EKS
AWS EKS亚马逊AWS的容器编排服务。AWS允许用户使用AWS Fargate运行EKS集群,AWS Fargate是用于容器的无服务器计算。AWS Fargate消除了配置和管理服务器的需要,从而允许为每个应用程序按资源付费。
AWS允许通过EKS使用其他功能,如Amazon CloudWatch,Amazon虚拟私有云(VPC),AWS Identity,Auto Scaling组和访问管理(IAM),监控,扩展和负载均衡应用程序。EKS与AWS App Mesh集成在一起,并提供Kubernetes原生体验。EKS运行最新的Kubernetes,并通过了Kubernetes认证。
GKE
GKE是谷歌云上的容器编排服务。GKE集群由Kubernetes提供支持,可以使用Kubernetes CLI与集群进行交互。Kubernetes命令可用于部署和管理应用程序,执行管理任务,设置策略以及监控已部署工作负载的运行状况。
谷歌云的高级管理功能也可用于GKE群集,如谷歌云的负载平均衡,节点池,节点的自动扩展,自动升级,节点自动修复,日志记录以及使用谷歌云的操作套件进行监控。
AKS
AKS是Azure提供的容器编排服务,它提供无服务器的Kubernetes,安全性和治理。AKS管理Kubernetes集群,AKS自动配置所有Kubernetes主节点和节点。用户只需要管理和维护代理节点。