這篇文章主要介紹了k8s和Docker關係簡單說明,本文利用圖文講解的很透徹,有須要的同窗能夠研究下
最近項目用到kubernetes(如下簡稱k8s,k和s之間有8個字母)。java
雖然以前也有簡單使用過,但最近發現k8s概念較多,命令也有些不夠用了,故想借此機會寫點東西,更全面認識並使用k8s。面試
本篇文章目的: 讓你更全面瞭解k8s概念,以及學到在工做中經常使用的操做。總體更偏向於原理和應用。在正式開始k8s以前,咱們先看看k8s和Docker的關係,分別從虛擬化角度、部署方式角度敘述why use容器,話很少說,開幹。spring
目前發現並無將kubernetes和Docker技術產生背景和需求進行比較的文章,本文從最純正的官方定義角度出發並展開,闡述兩者產生背景及與傳統技術對比。intellij-idea
官方定義1
:Docker是一個開源的應用容器引擎,開發者能夠打包他們的應用及依賴到一個可移植的容器中,發佈到流行的Linux機器上,也可實現虛擬化。ide
官方定義2
:k8s是一個開源的容器集羣管理系統,能夠實現容器集羣的自動化部署、自動擴縮容、維護等功能。工具
接下來咱們看兩張經典的圖:idea
上圖是Docker容器(可用k8s管理的玩意兒)與傳統虛擬化方式的不一樣之處:傳統的虛擬技術在將物理硬件虛擬成多套硬件後,須要在每套硬件上都部署一個操做系統,接着在這些操做系統上運行相應的應用程序。spa
而Docker容器內的應用程序進程直接運行在宿主機(真實物理機)的內核上,Docker引擎將一些各自獨立的應用程序和它們各自的依賴打包,相互獨立直接運行於未經虛擬化的宿主機硬件上,同時各個容器也沒有本身的內核,顯然比傳統虛擬機更輕便。每一個集羣有多個節點,每一個節點可運行多個容器,咱們的kuberbete就是管理這些應用程序所在的小運行環境(container)而生。操作系統
注意,你們別把這幅圖與上面Docker的那張圖混淆了,圖1是從虛擬化角度,說明了爲應用提供必要的運行環境所須要作的虛擬化操做(即:傳統:虛擬出的虛擬機裝操做系統、Docker:容器引擎管理下的容器)。.net
而圖2是在這些具體運行環境上進行真實應用部署時的狀況,傳統方式是將全部應用直接部署在同一個物理機器節點上,這樣每一個App的依賴都是徹底相同的,沒法作到App之間隔離,固然,爲了隔離,咱們也能夠經過建立虛擬機的方式來將App部署到其中(就像圖1上半部分那樣),但這樣太過繁重,故比虛擬機更輕便的Docker技術出現,如今咱們經過部署Container容器的技術來部署應用,所有Container運行在容器引擎上便可。
既然嫌棄虛擬機繁重,想用Docker,那好,你用吧,怎麼用呢?手動一個一個建立?固然不,故kubernetes技術便出現了,以kubernetes爲表明的容器集羣管理系統,這時候就該上場表演了。
說白了,咱們用kubernetes去管理Docker集羣,便可以將Docker當作Kubernetes內部使用的低級別組件。另外,kubernetes不只僅支持Docker,還支持Rocket,這是另外一種容器技術。但願我這篇文章中簡單的描述能讓你對二者有所理解和認識。
更多 Docker 系列教程請關注公衆號閱讀之前的文章。
原文連接:https://blog.csdn.net/yanghao...
版權聲明:本文爲CSDN博主「Harlan60」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連接及本聲明。
近期熱文推薦:
1.600+ 道 Java面試題及答案整理(2021最新版)
2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!
3.阿里 Mock 工具正式開源,幹掉市面上全部 Mock 工具!
4.Spring Cloud 2020.0.0 正式發佈,全新顛覆性版本!
以爲不錯,別忘了隨手點贊+轉發哦!