Kubernetes是一個對于虛擬機或者實體機場景具有Google風格集群管理功能的開源項目。它能良好的運行于現代的操作系統環境(比如CoreOS和Red Hat Atomic),并且提供可以被你管控的輕量級的計算節點。它是用Golang開發的,并且具有輕量化、模塊化、便攜的以及可擴展的特點。我們(Kubernetes開發團隊)正在和一些不同的技術公司(包括維護著Mesos項目的MesoSphere)合作來把Kubernetes變成一種與計算集群相互影響的標準化方法。這個想法是為了重新定義這樣的一種模式,那就是“人們需要以在Google的經歷為基礎來搭建集群應用”。這些概念包括如下內容:
pods:一種將容器組織在一起的方法replication controllers(復制控制器):一種控制容器生命周期的方法labels(標簽):一種找到和查詢容器的方法services(服務):一個用普通函數表現出來的容器集合因此,單獨使用Kubernetes 你能夠擁有有一個簡單的、容易搭建并且運行起來的、便攜的可擴展的工具,并且允許你把“集群”這個詞添加進你所能管理的最輕量級的方法的名詞本里。在一個集群上面運行你的程序吧!不用再去擔心一個單獨的機器了。在這種情況下,集群就像是類似虛擬機一樣靈活的資源。它是一個邏輯運算單元。打開它,使用它,調整它的大小,然后關閉它,就是這么快,就是這么簡單。
用Mesos的話,將會與基礎版本有相當重疊的部分,但是這些產品在其生命周期中有相當多的不同之處的,并且有很多的甜蜜點。Mesos具有分布式系統內核,它可以將不同的機器整合在一個邏輯計算機上面。當你擁有很多物理性的資源來創造一個巨大的靜態的計算集群的時候,它誕生的意義才會體現出來。一件很棒的事情是有很多的現代化可擴展性的數據處理應用在Mesos上面都運行的很好(包括Hadoop、Kafka、Spark等),同時它很好的原因是它能夠允許你將那些所有的數據處理應用都運行在一個基礎的資源池里面,同時給你一個新的容器包應用。它是一個在某種程度上比Kubernete更加重量級的項目,但是得益于它的那些像Mesosphere一樣的貢獻者,Mesos比Kubernetes變得更加簡單同時更加容易去管理。
現在真正有趣的事情是Mesos現在越來越適應并且被添加上了很多Kubernete的概念同時支持了很多Kubernetes的API。因此如果你需要它們的話,它將是對你的Kubernetes應用去獲得更多能力的一個便捷方式(比如高可用的主干、更加高級的調度命令、去管控很大數目結點的能力),同時能夠很好的適用于產品級工作環境中(畢竟Kubernetes任然還是一個初始版本)。
當被問到區別的時候,我會這樣說:
1.如果你是一個集群世界的新手,Kubernetes是一個很棒的起點。它是最快的、最簡單的、最輕量級的方法去擺脫束縛,同時開啟面向集群開發的實踐。它提供了一個高水平的可移植方案,因為它是被一些不同的貢獻者所支持的(例如微軟、IBM、Red Hat、CoreOs、MesoSphere、VMWare等等)。
2.如果你已經有已經存在的工作任務(Hadoop、Spark、Kafka等等),Mesos給你提供了一個可以讓你將不同工作任務相互交錯的框架,然后混合進一個包含Kubernetes 應用的新的東西。
3.如果你還沒有用Kubernetes 系列框架完成項目的能力,Mesos給了你一個減壓閥。
原文鏈接:http://dockerone.com/article/147