Kubernetes vs Mesos
當前國內最火的容器集群管理非Kubernetes和Mesos莫屬,那麽這兩種解決方案各自的應用場景和解決的痛點分別是什麽呢,這篇內容就來帶大家簡單的聊一聊他們各自特性,內容來自於網絡上各位大咖的總結,就當是一篇隨筆記錄吧。
Kubernetes簡介
Kubernetes是一個開源項目,它把谷歌的集群管理工具引入到虛擬機和裸機場景中。它可以完美運行在現代的操作系統環境(比如CoreOS和Red Hat Atomic),並提供可以被你管控的輕量級的計算節點。Kubernetes使用Golang開發,具有輕量化、模塊化、便攜以及可擴展的特點。系統架構如下圖:
Kubernetes集群的主要組件是:
pods : 容器組。Kubernetes以一個容器組為部署和調度的單位進行操作。一個典型的pod一般包含1到5個容器組成一個小型的集群提供服務。
Flat Networking Space : Kubernetes默認的網絡類型為單一的扁平網絡。允許所有的pod進行互相訪問。在同一個pod中的容器共享同一個IP,容器之間的互相訪問使用本地地址加端口的方式。
Labels:標簽是附加到對象的鍵值對,可用於以單個集合搜索和更新多個對象。
Services:服務是可以通過名稱解決的端點,可以使用標簽選擇器連接到端口。 該服務將自動輪詢pod之間的請求。 Kubernetes將為集群設置一個DNS服務器,用於監視新服務,並允許按名稱進行尋址。
Replication Controllers: 復制控制器是在Kubernetes中實例化pod的方法。 它們控制和監視運行的服務器端口的數量,從而提高容錯能力。
因此,只要使用Kubernetes你就能夠簡單並快速的啟動、移植並擴展集群。在這種情況下,集群就像是類似虛擬機一樣靈活的資源,它是一個邏輯運算單元。打開它,使用它,調整它的大小,然後關閉它,就是這麽快,就是這麽簡單。
Mesos + Marathon簡介
Apache Mesos是一個開源的群集管理器,旨在擴展到數百到數千個主機的大型群集。 Mesos支持多種工作負載,如Hadoop任務,雲本地應用程序等.Mesos的架構旨在提供高可用性和彈性。
Mesos集群中的主要組件有:
Mesos Agent Nodes: 負責運行最終的需求任務。 所有代理將可用資源的列表提交給master。
Mesos Master : Master負責向代理發送任務。 它保留了可用資源的列表,並將其“提供”給框架,例如Hadoop的。 Master根據分配策略決定提供多少資源。 通常會有備用的Master實例在發生故障時接管。
Zookeeper: 用於選舉和查找現任Master的地址。 運行ZooKeeper的多個實例來確保可用性並處理故障。
Frameworks: Frameworks與Master進行協調,將任務調度到agent節點上。 Frameworks 由兩個部分組件組成:
a. 用於執行程序進程運行在代理程序上,並負責執行任務
b. 用於調度的進程向主機註冊,並根據主機的需求選擇要使用的資源
Marathon由Mesosphere創建,旨在啟動,監控和擴展長服務應用程序,包括雲端的應用程序。 客戶通過REST API與Marathon交互。 還可以支持健康檢查和可用於與負載平衡器集成或用於分析指標的事件流。
Mesos和Kubernetes的願景差不多,但是它們在不同的生命周期中各有不同的優勢。Mesos是分布式系統內核,它可以將不同的機器整合在一個邏輯計算機上面。當你擁有很多的物理資源並想構建一個巨大的靜態的計算集群的時候,Mesos就派上用場了。有很多的現代化可擴展性的數據處理應用都可以在Mesos上運行,包括Hadoop、Kafka、Spark等,同時你可以通過容器技術將所有的數據處理應用都運行在一個基礎的資源池中。在某個方面來看,Mesos是一個比Kubernetes更加重量級的項目,但是得益於那些像Mesosphere一樣的貢獻者,Mesos正在變得更加簡單並且容易管理。
Mesos正在接受Kubernetes的理念,並已經開始支持Kubernetes API。因此如果你需要它們的話,它將是對你的Kubernetes應用去獲得更多能力的一個便捷方式(比如高可用的主幹、更加高級的調度命令、去管控很大數目結點的能力),同時能夠很好的適用於產品級工作環境中(畢竟Kubernetes仍然還是一個初始版本)。
最後,總結一下Kubernetes的開發者Craig對於兩個集群框架的說明:
1、如果你是一個集群世界的新手,那Kubernetes是一個很棒的開始。它可以用最快的、最簡單的、最輕量級的方式來解決你的問題,並幫助你進行面向集群的開發。它提供了一個高水平的可移植方案,因為很多廠商已經開始支持Kubernetes,例如微軟、IBM、Red Hat、CoreOS、MesoSphere、VMWare等。
2、如果你擁有已經存在的工作任務(Hadoop、Spark、Kafka等),那Mesos可以給你提供了一個將不同工作任務相互交錯的框架,然後還可以加入一些新的東西,比如Kubernetes應用。
3、如果你想使用的功能Kuberntes還沒實現,那Mesos是一個不錯的替代品,畢竟它已經成熟。
Mesos和Kubernetes都是為幫助應用程序在群集環境中運行而創建的,Kubernetes更加專註於運行容器群集,具有更多功能。
如果您同意Google的意見或沒有具體的方式來布局集群,Kubernetes是一個很好的選擇,可以為您處理許多幕後煩惱。
與此同時,Mesos具有更多的靈活性,更強大的調度功能,並且能夠與更多種類的調度器配合使用,並且已經從原始創建中進行了修改,以更好地支持容器。
非Docker和非集成應用程序可以在Mesos上運行,它能夠處理將會慢慢轉移到容器的非常復雜的工作負載。它還經過數萬個節點的測試,證明了強大的可擴展性和基礎設施。但是,您需要更加自信地使用此產品,因為您需要自己管理負載平衡和其他高級擴展功能。
在確定您的需求之後,您將能夠為您找到完美的容器編排工具。
參考鏈接:
http://dockone.io/article/147
https://stackoverflow.com/questions/26705201/whats-the-difference-between-apaches-mesos-and-googles-kubernetes
https://platform9.com/blog/compare-kubernetes-vs-mesos/
http://techgenix.com/swarm-kubernetes-mesos/
本文出自 “Trying” 博客,請務必保留此出處http://tryingstuff.blog.51cto.com/4603492/1951155
Kubernetes vs Mesos