近日,有篇文章比較了當(dāng)前市面上存在的其中幾種容器編排工具,范圍從可以自托管的開(kāi)源工具到容器即服務(wù)產(chǎn)品,而后者又涵蓋了初創(chuàng)公司和企業(yè)。
這些可選的編排工具有一些共同的特征,如容器配置、發(fā)布和發(fā)現(xiàn)、系統(tǒng)監(jiān)控和故障恢復(fù)、聲明式系統(tǒng)配置以及有關(guān)容器布置和性能的規(guī)則和約束定義機(jī)制。除此之外,有些工具還提供了處理特定需求的特性。
開(kāi)源編排工具包括Docker Swarm、Kubernetes、Marathon和Nomad。這些工具既可以安裝在企業(yè)內(nèi)部你自己的數(shù)據(jù)中心里,也可以安裝在大多數(shù)的云上。其中,作為谷歌容器引擎的一部分,Kubernetes還作為托管解決方案提供。它對(duì)邏輯單元pods進(jìn)行調(diào)度——pods是一組部署在一起的容器,用來(lái)完成特定的任務(wù)。Pods可以用于構(gòu)成更高層次的抽象,如部署。每個(gè)pod都提供了標(biāo)準(zhǔn)的監(jiān)控,也有用戶自定義的健康檢查。Kubernetes在類似OpenStack這樣的項(xiàng)目中也有應(yīng)用,它得到了社區(qū)及供應(yīng)商的支持。
Docker Swarm是Docker的原生編排工具。Docker 1.12新增了“swarm模式”特性,用于跨多個(gè)主機(jī)進(jìn)行編排。Docker Swarm仍然是一個(gè)獨(dú)立的產(chǎn)品。可以通過(guò)Docker API訪問(wèn)它,也可以用它調(diào)用類似docker compose這樣的工具,對(duì)服務(wù)和容器進(jìn)行聲明式編排。Docker Swarm是Docker Datacenter這個(gè)更大的產(chǎn)品的一部分,后者是針對(duì)企業(yè)級(jí)容器部署。
Swarm和Kubernetes都使用YAML配置文件。雖然二者都是開(kāi)源的,但Kubernetes對(duì)Docker沒(méi)有任何依賴,它是Cloud Native Computing Foundation(CNCF)項(xiàng)目的一部分。不過(guò),兩種工具都是既可以在本地運(yùn)行,也可以在類似AWS這樣的公有云上運(yùn)行。
編排框架Marathon基于Apache Mesos項(xiàng)目。Apache Mesos通過(guò)API提供了跨數(shù)據(jù)中心的資源管理和調(diào)度抽象,而這些數(shù)據(jù)中心可能是物理上分散的。Mesos上的系統(tǒng)可以使用底層的計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)資源,就像虛擬機(jī)通過(guò)虛擬機(jī)管理程序使用底層資源一樣。Marathon使用了Mesos并在它上面運(yùn)行,針對(duì)長(zhǎng)期運(yùn)行的應(yīng)用程序提供了容器編排功能。它既支持Mesos容器運(yùn)行時(shí),也支持Docker容器運(yùn)行時(shí)。
Amazon EC2容器服務(wù)(ECS)和Azure容器服務(wù)是兩個(gè)托管解決方案,其中后者是最新的解決方案。ECS僅支持在AWS的基礎(chǔ)設(shè)施上運(yùn)行的容器,它可以利用彈性負(fù)載均衡、日志工具CloudTrail等AWS特性。ECS任務(wù)調(diào)度器將任務(wù)分組成服務(wù)進(jìn)行編排。對(duì)于持久化數(shù)據(jù)存儲(chǔ),用戶可以使用數(shù)據(jù)卷或者Amazon彈性文件系統(tǒng)(EFS)。Azure的容器服務(wù)使用Mesos作為底層集群管理器。用戶也可以選用Apache Mesosphere數(shù)據(jù)中心操作系統(tǒng)(DC/OS)、Kubernetes或者Docker Swarm進(jìn)行編排。
Hashicorp的Nomad是一個(gè)開(kāi)源產(chǎn)品,可以支持Docker容器、VM和獨(dú)立應(yīng)用程序。Nomad基于代理模型,每個(gè)代理部署到一臺(tái)主機(jī)上,它會(huì)和中央Nomad服務(wù)器通信。Nomad服務(wù)器負(fù)責(zé)任務(wù)調(diào)度,其依據(jù)是哪臺(tái)主機(jī)有可用的資源。Nomad可以跨數(shù)據(jù)中心,而且也可以和其他Hashicorp工具(如Consul)集成。
該文在總結(jié)中寫道,在選擇使用哪種編排工具時(shí),其中一個(gè)決定性因素是,是否可以接受被鎖定到特定的基礎(chǔ)設(shè)施(如AWS或Azure)。
查看英文原文:A Comparison of Some Container Orchestration Options