數人云之前分享了《聊聊調度框架,K8S、Mesos、Swarm 一個都不能少》那么你是否仍在Docker和Kubernetes選擇上陷入了困擾?所以不要擔心,因為這也是很多人的苦惱,這兩者都是非常優秀的容器服務,至于那種更好,其實在很大程度上取決于自身和團隊的需求。
在深入研究前,我們需要了解什么是“容器”。
容器是輕量級、獨立的鏡像,可以用來實現軟件,包含了成功運行應用所需的所有內容,工作方式類似于虛擬機(VM),但是它只包含必要的庫和設置來執行應用。
Docker Swarm、Kubernetes都提供了相同基礎設施中部署和隔離軟件的容器,也有很好處理應用的方式,但這兩者之間也有一些關鍵性的區別:
很多工程師,都喜歡在Docker Swarm上工作,因為它很容易使用和實現,但選擇了Docker Swarm,它就會比Kubernetes更優秀嗎?
需要先了解一下什么是Docker Swarm、Kubernetes。
Docker Swarm
Docker是一個開源平臺,它可能意味著一個公司,一個容器平臺或Docker集群,本文討論的是容器技術,所以這里提到的Docker的意思其實是Docker Swarm,Docker Swarm是一個靈活的容器存儲平臺,以強大的易用性而著稱,另一方面,Docker Swarm則完全是為了管理Docker引擎集群。
Kubernetes
Kubernetes是一個流行的開源容器存儲程序,它是由谷歌建立的,用來管理其系統,這是一個開源的、可擴展的、強大的工具,可以處理容器,同時提供巨大的可伸縮性和自動化。
去年,作為熱門游戲之一的Pokemon Go,也使用了Kubernetes來管理它們的產品和快速擴展,Pokemon Go的成功,自己快速地傳播,讓人切實地感受到了Kubernetes的力量。
對比
安全和設置
每個工具都有自己的安裝和設置過程,想在云端或其他基礎設置中管理容器
,很大程度上取決于它是如何建立的,相比之下,Kubernetes對用戶的友好度并不如Docker Swarm。
Kubernetes:當涉及到安裝和設置時,它會給開發者出一些難題,首先,需要為每個操作系統(OS)重新配置,在線文檔在這個過程中有很多的幫助,然而在構建定制環境時,可能會變得十分復雜,唯一的解決辦法是:搜谷歌。Kubernetes不容易安裝和設置的另一個關鍵原因在實現之前需要進行規劃,需要花費大量的時間和精力去規劃節點,而且要進行人工整合,因為它并不是所有的東西都可以自動化,這讓Kubernetes難以管理。
Docker Swarm:得益于它的命令行界面(CLI),Docker Swarm很容易設置和管理,它使用CLI和GIT類似的語義,這使得應用開發者能夠輕易地將新技術集成到工作流當中,與Kubernetes相比,在實現新操作系統、環境的容器時,無需學習新的東西。
綜上所述,在安裝和設置方面,Docker Swarm略勝一籌。
監控和日志
一旦部署了容器,下一步就是監控節點集群,Kubernetes和Docker Swarm都成功地提供了一個良好的監控和日志記錄流程。
對于Kubernetes來說,監控和日志記錄集群的方法不止一種,下面有一些方法以供參考:
- 監控:Grafana , Heapster , or Influx
- 日志記錄:Kibana (ELK) or Elasticsearch
對于Docker Swarm來說,沒有內置的庫或進程來監控或記錄,但是開發人員可以使用第三方應用來達到目的,第三方監控工具有:Sumo Logic , Retrace , Reimann , and DataDog。
伸縮和性能
使用容器服務的最基本原理是它們提供的可伸縮性,這兩個平臺都是高度可伸縮的,并且在特定的時間支撐數千個容器,起初,Docker Swarm對大量的容器沒有很好的支持,然而,在新的版本后,它就可以支持和Kubernetes的容器數量比肩,兩個系統都支持1000個節點集群,這些集群可以支持多大3萬個容器。
在性能方面,Kubernetes對Dokcer Swarm有良好的基礎,然而,由獨立機構完成研究表明,Docker Swarm可以比Kubernetes快5倍的速度去運轉容器。
Kubernetes | Docker Swarm |
---|---|
在市場上最成熟的解決方案。 | Docker Swarm提供良好的特性,但受限于其API。 |
Kubernetes也在市場上最受歡迎的解決方案。 | rDocker Swarm的市場Kubernetes相比相對較弱。 |
Kubernetes很難安裝和配置。 | Docker Swarm的設置和安裝是很容易的。 |
Kubernetes提供內置的日志記錄和監控工具。 | Docker只支持第三方監控和日志記錄工具。 |
自動定量的CPU利用率是一個很大的因素。 | 可以手動擴展服務。 |
結論
Kubernetes得到了開發者社區的廣泛認可,盡管它的安裝過程非常艱難,之所以受到歡迎的原因很大程度取決于它提供的靈活性,以及良好的谷歌背景,而Docker Swarm有一個小型的社區,增長略微緩慢。
Kubernetes的龐大社區意味著新的工具、特定和支持。若你是一個小的開發者,想要學習容器服務,那么Kubernetes會有大量的經驗可以借鑒,很多志同道合的朋友可以一起學習,而Docker Swarm同樣可以根據自身業務需求更深入了解。
原文作者:Damian Wolf
原文鏈接:https://dzone.com/articles/docker-vs-kubernetes-prons-and-cons?utm_source=tuicool&utm_medium=referral