首頁 > 運維 > Docker > 主體

k8s與docker的差別是什麼?

青灯夜游
發布: 2020-10-23 16:27:32
原創
4771 人瀏覽過

區別:k8s是一個開源的容器叢集管理系統,可以實現容器叢集的自動化部署、自動擴縮容、維護等功能;Docker是一個開源的應用容器引擎,開發者可以打包他們的應用及依賴到一個可移植的容器中,發佈到流行的Linux機器上,也可實現虛擬化。

k8s與docker的差別是什麼?

(推薦教學:docker教學

Docker與k8s的差異與介紹

2010年,幾個搞IT的年輕人,在美國舊金山成立了一家名叫「dotCloud」的公司。

這家公司主要提供基於PaaS的雲端運算技術服務。具體來說,是和LXC有關的容器技術。

LXC,是Linux容器虛擬技術(Linux container)

後來,dotCloud公司將自己的容器技術進行了簡化和標準化,並命名為——Docker。

Docker技術誕生之後,並沒有引起業界的關注。而dotCloud公司,作為一家小型創業企業,在激烈的競爭之下,也步履維艱。

正當他們快要堅持不下去的時候,腦中蹦出了「開源」的想法。

什麼是「開源」?開源,就是開放原始碼。也就是將原來內部保密的程式原始碼開放給所有人,然後讓大家一起參與進來,貢獻程式碼和意見。

Open Source,開源

有的軟體是一開始就開源的。也有的軟體,是混不下去,創造者又不想放棄,所以選擇開源。自己養不活,就吃「百家飯」嘛。

2013年3月,dotCloud公司的創辦人之一,Docker之父,28歲的Solomon Hykes正式決定,將Docker專案開源。

Solomon Hykes(今年剛從Docker離職)

不開則已,一開驚人。

越來越多的IT工程師發現了Docker的優點,然後蜂擁而至,加入Docker開源社群。

Docker的人氣迅速攀升,速度之快,令人瞠目結舌。

開源當月,Docker 0.1版本發布。此後的每一個月,Docker都會發布一個版本。到2014年6月9日,Docker 1.0版本正式發布。

此時的Docker,已經成為業界人氣最火爆的開源技術,沒有之一。甚至像Google、微軟、Amazon、VMware這樣的巨頭,都對它青睞有加,表示將全力支持。

Docker火了之後,dotCloud公司乾脆把公司名字也改成了Docker Inc.。

Docker和容器技術為什麼會這麼火爆?說穿了,就是因為它「輕」。

在容器技術之前,業界的網紅是虛擬機器。 虛擬機器技術的代表,是VMWareOpenStack

相信很多人都用過虛擬機器。虛擬機,就是在你的作業系統裡面,裝一個軟體,然後透過這個軟體,再模擬一台甚至多台「子電腦」出來。

虛擬機,類似於「子電腦」

在「子電腦」裡,你可以和正常電腦一樣運行程序,例如開QQ。如果你願意,你可以變出好幾個“子電腦”,裡面都開QQ。 「子電腦」和「子電腦」之間,是互相隔離的,互不影響。

虛擬機器屬於虛擬化技術。而Docker這樣的容器技術,也是虛擬化技術,屬於輕量級的虛擬化

虛擬機雖然可以隔離出很多“子電腦”,但佔用空間更大,啟動更慢,虛擬機軟體可能還要花錢(例如VMWare)。

而容器技術剛好沒有這些缺點。它不需要虛擬出整個作業系統,只需要虛擬一個小規模的環境(類似「沙箱」)。

沙箱

它啟動時間很快,幾秒鐘就能完成。而且,它對資源的利用率很高(一台主機可以同時運作數千個Docker容器)。另外,它佔的空間很小,虛擬機器一般要幾GB到幾十GB的空間,而容器只需要MB級甚至KB級。

容器和虛擬機器的對比

正因為如此,容器技術受到了熱烈的歡迎和追捧,發展迅速。

我們具體來看看Docker。

大家要注意,Docker本身並不是容器,它是建立容器的工具,是應用容器引擎。

想搞懂Docker,其實看它的兩句口號就行。

第一句,是「Build, Ship and Run」。

也就是,“搭建、發送、運行”,三板斧。

舉個例子:

我來到一片空地,想蓋個房子,於是我搬石頭、砍木頭、畫圖紙,一頓操作,終於把這個房子蓋好了。

結果,我住了一段時間,想搬到另一片空地去。這時候,照以往的辦法,我只能再次搬石頭、砍木頭、畫圖紙、蓋房子。

但是,跑來一個老巫婆,教我一種魔法。

這種魔法,可以把我蓋好的房子複製一份,做成“鏡像”,放在我的背包裡。

等我到了另一片空地,就用這個“鏡像”,複製一套房子,擺在那邊,拎包入住。

怎麼樣?是不是很神奇呢?

所以,Docker的第二句口號就是:「Build once,Run anywhere(搭建一次,到處能用)」。

Docker技術的三大核心概念,分別是:

  • 映像(Image)
  • 容器(Container)
  • 倉庫(Repository)

我剛才例子裡面,那個放在包包裡的“鏡像”,就是Docker映像。而我的背包,就是Docker倉庫。我在空地上,用魔法造好的房子,就是一個Docker容器

說穿了,這個Docker映像,是一個特殊的檔案系統。它除了提供容器運行時所需的程式、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(例如環境變數)。鏡像不包含任何動態數據,其內容在建置之後也不會被改變。

也就是說,每次變出房子,房子是一樣的,但生活用品之類的,都是不管的。誰住誰負責添置。

每一個鏡像可以變出一種房子。那麼,我可以有多個鏡像呀!

也就是說,我蓋了一個歐式別墅,生成了鏡像。另一個哥們可能蓋了一個中國四合院,也生成了鏡像。還有哥們,蓋了一個非洲茅草屋,也生成了鏡像。 。 。

這麼一來,我們可以交換鏡像,你用我的,我用你的,豈不是很爽?

於是乎,就變成了一個大的公共倉庫。

負責對Docker映像進行管理的,是Docker Registry服務(類似倉庫管理員)。

不是任何人建造的任何鏡像都是合法的。萬一有人蓋了一個有問題的房子呢?

所以,Docker Registry服務對映像的管理是非常嚴格的。

最常使用的Registry公開服務,是官方的Docker Hub,這也是預設的Registry,並擁有大量的高品質的官方映像。

好了,說完了Docker,我們再把目光轉向K8S。

就在Docker容器技術被炒得熱火朝天之時,大家發現,如果想要將Docker應用於具體的業務實現,是存在困難的——編排、管理和調度等各個方面,都不容易。於是,人們迫切需要一套管理系統,對Docker及容器進行更高階、更靈活的管理。

就在這個時候,K8S出現了。

K8S,就是基於容器的叢集管理平台,它的全名,是kubernetes。

Kubernetes這個字來自希臘語,意思是舵手或領航員。 K8S是它的縮寫,用「8」字取代了「ubernete」這8個字元。

和Docker不同,K8S的創造者,是眾人皆知的產業巨頭-Google

然而,K8S並不是一件全新的發明。它的前身,是Google自己搗鼓了十多年的Borg系統

K8S是2014年6月由Google公司正式公佈出來並宣布開源的。

同年7月,微軟、Red Hat、IBM、Docker、CoreOS、Mesosphere和Saltstack等公司,相繼加入K8S。

之後的一年內,VMware、HP、Intel等公司,也陸續加入。

2015年7月,Google正式加入OpenStack基金會。同時,Kuberentes v1.0正式發布。

目前,kubernetes的版本已經發展到V1.13。

K8S的架構,稍微有點複雜,我們簡單來看一下。

一個K8S系統,通常稱為一個K8S叢集(Cluster)

這個叢集主要包含兩個部分:

  • 一個Master節點(主節點)
  • 一群Node節點(計算節點)

一看就明白:Master節點主要還是負責管理控制。 Node節點是工作負載節點,裡面是具體的容器。

深入這兩種節點。

首先是Master節點。

Master節點包含API Server、Scheduler、Controller manager、etcd。

API Server是整個系統的對外接口,供客戶端和其它元件調用,相當於「營業廳」。

Scheduler負責對叢集內部的資源進行調度,相當於「調度室」。

Controller manager負責管理控制器,相當於「大總管」。

然後是Node節點

Node節點包含Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod

Pod是Kubernetes最基本的操作單元。一個Pod代表著叢集中運行的一個進程,它內部封裝了一個或多個緊密相關的容器。除了Pod之外,K8S還有一個Service的概念,一個Service可以看作一組提供相同服務的Pod的對外存取介面。這段不太好理解,跳過吧。

Docker,不用說了,建立容器的。

Kubelet,主要負責監視指派到它所在Node的Pod,包括建立、修改、監控、刪除等。

Kube-proxy,主要負責提供Pod物件代理。

Fluentd,主要負責日誌收集、儲存與查詢。

是不是有點懵?唉,三言兩語真的很難講清楚,繼續跳過吧。

Docker和K8S都介紹完了,然而文章並沒有結束。

接下來的部分,是寫給核心網路工程師甚至所有通訊工程師看的

從幾十年前的1G,到現在的4G,再到將來的5G,行動通訊發生了翻天覆地的變化,核心網亦是如此。

但是,如果你仔細洞察這些變化,你會發現,所謂的核心網,其實本質上並沒有改變,無非就是很多的伺服器而已。不同的核心網網元,就是不同的伺服器,不同的運算節點。

變化的,是這些「伺服器」的形態和接口:形態,從機櫃單板,變成機櫃刀片,從機櫃刀片,變成X86通用刀片伺服器;接口,從中繼線纜,變成網路線,從網路線,變成光纖。

就算變來變去,還是伺服器,是運算節點,是CPU。

既然是伺服器,那麼就勢必會和IT雲端運算一樣,走上虛擬化的道路。畢竟,虛擬化有太多的優勢,例如前文所說的低成本、高利用率、充分靈活、動態調度,等等。

前幾年,大家以為虛擬機器是核心網的終極型態。目前看來,更有可能是容器化。這幾年常說的NFV(網元功能虛擬化),也有可能改口為NFC(網元功能容器化)。

以VoLTE為例,如果以以前2G/3G的方式,那需要大量的專用設備,分別充當EPC和IMS的不同網元。

VoLTE相關的網元

而採用容器之後,很可能只需要一台伺服器,建立十幾個容器,用不同的容器,來分別運行不同網元的服務程序。

這些容器,隨時可以創建,也可以隨時銷毀。也能夠在不停機的情況下,隨意變大,隨意變小,隨意變強,隨意變弱,在性能和功耗之間動態平衡。

簡直完美!

5G時代,核心網路採用微服務架構,也是和容器完美搭配-單體式架構(Monolithic)變成微服務架構(Microservices),相當於一個全能型變成N個專屬型。每個專能型,分配給一個隔離的容器,賦予了最大程度的彈性。

精細化分工

#

依照這樣的發展趨勢,在行動通訊系統中,除了天線,剩下的部分都有可能虛擬化。核心網是第一個,但不是最後一個。虛擬化之後的核心網,與其說屬於通信,實際上更該歸類為IT。核心網的功能,只是容器中普通一個軟體功能而已。

至於說在座的各位核心網工程師,恭喜你們,馬上就要成功轉型啦!

以上是k8s與docker的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板