標籤:

數人云|關於Docker Swarm&K8S,幾大要素免踩坑

數人云之前分享了《聊聊調度框架,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倍的速度去運轉容器。

KubernetesDocker Swarm在市場上最成熟的解決方案。Docker Swarm提供良好的特性,但受限於其API。Kubernetes也在市場上最受歡迎的解決方案。rDocker Swarm的市場Kubernetes相比相對較弱。Kubernetes很難安裝和配置。Docker Swarm的設置和安裝是很容易的。Kubernetes提供內置的日誌記錄和監控工具。Docker只支持第三方監控和日誌記錄工具。自動定量的CPU利用率是一個很大的因素。可以手動擴展服務。

結論

Kubernetes得到了開發者社區的廣泛認可,儘管它的安裝過程非常艱難,之所以受到歡迎的原因很大程度取決於它提供的靈活性,以及良好的谷歌背景,而Docker Swarm有一個小型的社區,增長略微緩慢。

Kubernetes的龐大社區意味著新的工具、特定和支持。若你是一個小的開發者,想要學習容器服務,那麼Kubernetes會有大量的經驗可以借鑒,很多志同道合的朋友可以一起學習,而Docker Swarm同樣可以根據自身業務需求更深入了解。

原文作者:Damian Wolf 原文鏈接:dzone.com/articles/dock


推薦閱讀:

聊聊調度框架,K8S、Mesos、Swarm 一個都不能少
Kubernetes 1.9發布:年度更新這些評論亮了!
Kubernetes中的用戶與身份認證授權
使用Heapster和Splunk監控Kubernetes運行性能
編排工具充分發揮了 Linux 容器技術優勢

TAG:Docker | Kubernetes |