容器技術Docker、Docker-Compose、k8s的演變

  越來越多的應用開始容器化以及上雲,可能有些人直接接觸的就是k8s(Kubernetes)的概念以及操作了,但是理清一下容器化技術的一些演變過程,是一件很有意思的事情,同時也可以加強我們對容器化技術的深入理解和具體場景下運用哪種技術。

一、Docker vs 虛擬機

  KVM技術的發展,解放了單臺服務器物理機的資源過剩的浪費,虛擬機的資源互相獨立,部署應用不受影響,但缺點是佔用資源多,有安全補丁更新時候要一起更新,管理起來比較麻煩。容器Docker就是爲了解決這種困境,在耗費資源低的情況下,又可以方便部署資源和依賴互相獨立的應用,從而實現快速部署。他們倆的層級差異如圖:

在這裏插入圖片描述
在這裏插入圖片描述
  正如docker的鯨魚圖上的集裝箱一樣,docker的容器運行是以沙盒的機制運行,共享底層操作系統,會把應用需要的依賴打包在一起,以沙盒的方式,在同類型的操作系統上,可以自由遷移部署運行,如此就可以極大地解放了部署環境不一致的問題。

二、Docker-Compose 的誕生

  容器化的盛行,也帶來了新的問題,那就是如何高效地去部署和管理這些鏡像呢?因爲比較大型的應用服務,往往需要多個組件一起合作才能正常運行,這就給單docker容器部署提出了挑戰,Docker-Compose就像下面這隻八爪章魚,可以同時進行多容器的構建以及部署運行。

在這裏插入圖片描述

三、k8s(Kubernetes)的橫空出世 vs Docker Swarm

  Docker和Docker-Compose的運用,充分地把單物理服務器的性能充分利用起來,並且可以快速地進行持續交付。但是如何把如下圖中A機器的容器鏡像遷移到其他服務器以及如果遇到高併發,如何進行負載均衡分流呢?

在這裏插入圖片描述
  重複地拷貝一下鏡像到B服務器再運行?那如何高效地進行監控各個容器的健康運行情況以及崩潰後如何遷移服務呢?集羣的管理問題,此時出現了Docker Swarm技術,是docker自家的技術,但是Google接着開源了其內部用了很久的容器治理編排工具Kubernetes,以其高效以及智能自動化的管理機制,吸引了大批開源開發者以及公司的青睞,從此一戰成名,Docker Swarm的市場份額進一步低迷。故這裏只介紹下k8s主要的原理以及解決了哪些痛點的問題。

在這裏插入圖片描述
  k8s就像一個領航員,把各種集裝箱(container)有條不紊地組裝起來,着重提供如下功能:
1.快速部署功能:定義對應的charts,可以方便把大型的應用部署上去。
2.智能的縮擴容機制:部署時候會自動去考慮容器應該部署在哪個服務器上,以及副本的數量可以自定義。
3.自愈功能:某個節點的服務崩潰了,可以自動遷移到另外一個服務器節點來恢復來實現高可用。
4.智能的負載均衡:利用Ingress,可以實現流量通過域名訪問進來時候,進行流量的分流到不同服務器上。
5.智能的滾動升降級:升級或者降級時候,會逐個替換,當自定義數量的服務升級OK後,纔會進行其他的升級以及真正銷燬舊的服務。
。。。

四、幾種技術的應用場景及資源佔用情況

技術 應用場景 資源佔用情況
Docker 單機部署簡單應用
Docker-Compose 單機/少數機器部署應用
k8s 集羣部署高可用應用

原創文章,歡迎轉載,轉載請註明:ifish.site

作者:JaydenZhou

參考文檔:

Docker常用命令 https://ifish.site/docker_01.html

Docker百度百科 https://baike.baidu.com/item/Docker/13344470?fr=aladdin

乾貨滿滿!10分鐘看懂Docker和K8S https://my.oschina.net/jamesview/blog/2994112

Docker及Docker-Compose的使用 https://www.jianshu.com/p/ca1623ac7723

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章