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