2010年,幾個搞IT的年輕人,在美國舊金山成立了一家名叫「dotCloud」的公司。服務器
這家公司主要提供基於PaaS的雲計算技術服務。具體來講,是和LXC有關的容器技術。架構
LXC,就是Linux容器虛擬技術(Linux container)微服務
後來,dotCloud公司將本身的容器技術進行了簡化和標準化,並命名爲——Docker。工具
Docker技術誕生以後,並無引發行業的關注。而dotCloud公司,做爲一家小型創業企業,在激烈的競爭之下,也寸步難行。性能
正當他們快要堅持不下去的時候,腦子裏蹦出了「開源」的想法。ui
什麼是「開源」?開源,就是開放源代碼。也就是將原來內部保密的程序源代碼開放給全部人,而後讓你們一塊兒參與進來,貢獻代碼和意見。雲計算
Open Source,開源操作系統
有的軟件是一開始就開源的。也有的軟件,是混不下去,創造者又不想放棄,因此選擇開源。本身養不活,就吃「百家飯」嘛。開放源代碼
2013年3月,dotCloud公司的創始人之一,Docker之父,28歲的Solomon Hykes正式決定,將Docker項目開源。3d
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和容器技術爲何會這麼火爆?說白了,就是由於它「輕」。
在容器技術以前,業界的網紅是虛擬機。虛擬機技術的表明,是VMWare和OpenStack。
相信不少人都用過虛擬機。虛擬機,就是在你的操做系統裏面,裝一個軟件,而後經過這個軟件,再模擬一臺甚至多臺「子電腦」出來。
虛擬機,相似於「子電腦」
在「子電腦」裏,你能夠和正常電腦同樣運行程序,例如開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。核心網的功能,只是容器中普通一個軟件功能而已。
至於說在座的各位核心網工程師,恭喜大家,立刻就要成功轉型啦!