不會Docker和K8S,同事被移出公司羣聊

雲棲號資訊:【點擊查看更多行業資訊
在這裏您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

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

image

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

image


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

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

image

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

正當他們快要堅持不下去的時候,腦子裏蹦出了“開源”的想法。

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

image


Open Source,開源

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

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

image


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. 。

image

Docker 和容器技術爲什麼會這麼火爆?說白了,就是因爲它“輕”。

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

相信很多人都用過虛擬機。虛擬機,就是在你的操作系統裏面,裝一個軟件,然後通過這個軟件,再模擬一臺甚至多臺“子電腦”出來。

image


虛擬機,類似於“子電腦”

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

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

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

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

image


沙箱

它啓動時間很快,幾秒鐘就能完成。而且,它對資源的利用率很高(一臺主機可以同時運行幾千個 Docker 容器)。

此外,它佔的空間很小,虛擬機一般要幾 GB 到幾十 GB 的空間,而容器只需要 MB 級甚至 KB 級。

image


容器和虛擬機的對比

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

我們具體來看看 Docker。

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

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

第一句,是“Build, Ship and Run”。

image


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

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

image


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

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

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

image

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

image

怎麼樣?是不是很神奇?

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

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

鏡像(Image)

容器(Container)

倉庫(Repository)

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

說白了,這個 Docker 鏡像,是一個特殊的文件系統。它除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(例如環境變量)。

鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

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

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

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

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

image

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

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

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

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

最常使用的 Registry 公開服務,是官方的 Docker Hub,這也是默認的 Registry,並擁有大量的高質量的官方鏡像。

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

就在 Docker 容器技術被炒得熱火朝天之時,大家發現,如果想要將 Docker 應用於具體的業務實現,是存在困難的——編排、管理和調度等各個方面,都不容易。

於是,人們迫切需要一套管理系統,對 Docker 及容器進行更高級更靈活的管理。

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

K8S,就是基於容器的集羣管理平臺,它的全稱,是 kubernetes。

image

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 節點(計算節點)

image

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

深入來看這兩種節點。

首先是 Master 節點。

image

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

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

Scheduler 負責對集羣內部的資源進行調度,相當於“調度室”。

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

然後是 Node 節點。

image

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 的不同網元。

image


VoLTE 相關的網元

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

image


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

簡直完美!

5G 時代,核心網採用微服務架構,也是和容器完美搭配——單體式架構(Monolithic)變成微服務架構(Microservices),相當於一個全能型變成 N 個專能型。

每個專能型,分配給一個隔離的容器,賦予了最大程度的靈活。

image


精細化分工

按照這樣的發展趨勢,在移動通信系統中,除了天線,剩下的部分都有可能虛擬化。核心網是第一個,但不是最後一個。

虛擬化之後的核心網,與其說屬於通信,實際上更應該歸爲 IT。核心網的功能,只是容器中普通一個軟件功能而已。

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

image

【雲棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/live

立即加入社羣,與專家面對面,及時瞭解課程最新動態!
【雲棲號在線課堂 社羣】https://c.tb.cn/F3.Z8gvnK

原文發佈時間:2020-07-21
文作者:51CTO技術棧
本文來自:“51CTO技術棧”,瞭解相關信息可以關注“51CTO技術棧

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