Kubernetes從入門到精通(零)-前傳[容器化的崛起之K8S大展宏圖]

0. 應(yīng)用開發(fā)的趨勢

這幾年應(yīng)用開發(fā)的趨勢凑耻,從傳統(tǒng)的單體應(yīng)用升級到微服務(wù)架構(gòu)已是大勢所趨太示。
拋開巨型互聯(lián)網(wǎng)企業(yè)不談,中大型企業(yè)微服務(wù)架構(gòu)也已成了企業(yè)開發(fā)的首選香浩,就連小公司對于微服務(wù)開發(fā)也躍躍欲試类缤。微服務(wù)架構(gòu)一統(tǒng)企業(yè)開發(fā)的時代已經(jīng)到來。
如果邻吭,你的企業(yè)還在進行傳統(tǒng)的單體應(yīng)用開發(fā)餐弱,那么你必須意識到你已經(jīng)落后了,落后是要挨打的。

?

1. 單體應(yīng)用到微服務(wù)的挑戰(zhàn)

一項新技術(shù)的崛起是鼓舞人心的膏蚓,但是在這過程中必然會遇到很多挑戰(zhàn)猖败,這些挑戰(zhàn)是來自技術(shù)層面的。

我們先來看一下單體應(yīng)用和微服務(wù)的結(jié)構(gòu)圖比較降允。

單體應(yīng)用:


單體應(yīng)用

微服務(wù):


微服務(wù)

從上面兩幅圖可以看出恩闻,傳統(tǒng)的單體應(yīng)用多個模塊之間在單服務(wù)器上的單進程內(nèi)進行通信,而微服務(wù)架構(gòu)下則演變成各個服務(wù)多進程跨服務(wù)器之間的通信和交互剧董,變得復(fù)雜了許多幢尚。

微服務(wù)之間的通信,同步方式往往通過類似REST形式的HTTP通信翅楼,異步的話則通過類似AMQP協(xié)議的消息隊列機制尉剩。

這里我們遇到的第一個挑戰(zhàn)來了。

微服務(wù)的擴展
服務(wù)的單獨擴展

你的企業(yè)應(yīng)用如果有很多微服務(wù)毅臊,它們各自的擴展是不一樣的理茎。
比如,登陸微服務(wù)的并發(fā)和訪問壓力比較大管嬉,可能需要進行負載均衡皂林,而且還不止一個。
從上面的圖中我們可以看出蚯撩,菱形微服務(wù)進行了2臺服務(wù)器3個進程的擴展础倍,而圓形服務(wù)則不需要進行擴展。

既然我們引入了微服務(wù)胎挎,服務(wù)之間肯定有著錯綜復(fù)雜的調(diào)用關(guān)系吧沟启。
那么,我們遇到的第二個挑戰(zhàn)來了犹菇。

微服務(wù)間復(fù)雜的依賴關(guān)系

還是用圖來說話德迹。

傳統(tǒng)的單體應(yīng)用,各個模塊間的調(diào)用是有著順序的揭芍,我們往往可以用樹形結(jié)構(gòu)來表示胳搞,見下圖:


單體應(yīng)用樹形依賴鏈

微服務(wù)并不是樹形的,而是更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)沼沈,見下圖:


微服務(wù)網(wǎng)狀依賴鏈

從上面的比較可以看出流酬,微服務(wù)的依賴關(guān)系是網(wǎng)狀的,要復(fù)雜很多列另,如果管理這些依賴,追蹤服務(wù)間的調(diào)用旦装,這又是一個新的挑戰(zhàn)页衙。

最后,我們既然開發(fā)了那么多微服務(wù),那么我們的服務(wù)肯定是要發(fā)布的是吧店乐。但是問題來了艰躺,那么多的服務(wù),我怎么一下子發(fā)布呢眨八,而且腺兴,原來的持續(xù)集成現(xiàn)在應(yīng)該怎么做呢?

那么廉侧,這就又是一個挑戰(zhàn): 微服務(wù)的發(fā)布和持續(xù)集成页响。

?

2. 容器技術(shù)的崛起

在容器技術(shù)之前,我們更多的是應(yīng)用虛擬機(VM)技術(shù)段誊,我們在一個服務(wù)器上可以開辟多個虛擬機闰蚕,每一個虛擬機就相當(dāng)于一個小型的服務(wù)器,虛擬機之間互相通信连舍,虛擬機內(nèi)部我們安裝對應(yīng)的軟件和應(yīng)用没陡。

那么容器技術(shù)是什么?
容器相當(dāng)于在主機內(nèi)運行的一個單獨隔離的進程索赏,它單獨消耗該容器內(nèi)的應(yīng)用所需要的資源盼玄。
相比于虛擬機來說,容器更輕量潜腻,不需要像虛擬機一樣需要額外的進程强岸, 能夠運行更多數(shù)量的應(yīng)用。

還是用圖來說話

應(yīng)用運行在虛擬機上的結(jié)構(gòu)圖:


虛擬機應(yīng)用

應(yīng)用運行在容器中的結(jié)構(gòu)圖:


容器中的應(yīng)用
Docker容器化平臺

容器技術(shù)的崛起砾赔,必須提到Docker蝌箍。
不得不說,Docker已經(jīng)成為了容器化技術(shù)的事實標(biāo)準(zhǔn)暴心。

Docker是什么妓盲?
Docker is a platform for packaging, distributing, and running applications.
Docker是一個用于打包,發(fā)布专普,運行應(yīng)用程序的平臺悯衬。

Docker的關(guān)鍵概念
  • 鏡像(Images)
    鏡像是用來把你的應(yīng)用和它的環(huán)境打包進去的東西。
    鏡像包含了應(yīng)用所需要的文件系統(tǒng)和一些其它的元數(shù)據(jù)檀夹,比如鏡像要運行時的路徑筋粗。

  • 注冊倉庫(Registries)
    Docker的注冊倉庫(Registries)是用來存儲和共享docker鏡像的。
    你可以通過推(push)和拉(pull)的方式上傳和下載鏡像炸渡。
    倉庫中的鏡像可以使公有或私有的娜亿。

  • 容器(Containers)
    容器是一個單獨的運行在主機上的進程。
    它包含自己需要的資源(eg: CPU, RAM, etc)蚌堵,并且資源獨立买决。

構(gòu)建沛婴,發(fā)布和運行Docker鏡像的流程
構(gòu)建,發(fā)布和運行Docker鏡像的流程
  • 聲明從哪里拉取鏡像
  • 構(gòu)建鏡像
  • Docker推送鏡像到倉庫
  • 聲明如何運行鏡像
  • Docker從倉庫拉取鏡像
  • Docker以容器的方式運行鏡像

?

3. Kubernetes介紹

之前說了督赤,要維護那么多微服務(wù)的容器嘁灯,而且它們之間又有著錯綜復(fù)雜的依賴關(guān)系,是一件非常復(fù)雜且耗時的事情躲舌。如果節(jié)點上千丑婿,變成了一個不可能完成的任務(wù)。

那么没卸,我們需要一個好的容器編排和管理的系統(tǒng)羹奉。

Kubernetes是什么?
Kubernetes是當(dāng)前被業(yè)界廣泛認可和看好的基于Docker的大規(guī)模容器化分布式系統(tǒng)解決方案办悟。
它是谷歌的Borg(谷歌的久負盛名的大規(guī)模集群管理系統(tǒng))的一個開源版本尘奏。

Kubernetes是一個開放的平臺。
它不局限于任何一種語言病蛉,沒有限定任何編程接口炫加。
Java, Go, C++, Python編寫的服務(wù),都可以被映射為Kubernetes的服務(wù)铺然。

Kubernetes運作原理

Kubernetes把所有的服務(wù)節(jié)點統(tǒng)籌為一個數(shù)據(jù)中心俗孝,作為一個可發(fā)布的平臺,見下圖:


Kubernetes運作原理

從上圖可以看出魄健,開發(fā)人員通過編寫App描述來將應(yīng)用通過master部署到任意多的worker節(jié)點赋铝。

Kubernetes就像一個操作系統(tǒng),它具備以下功能:

  • 服務(wù)發(fā)現(xiàn)(service discovery)
  • 擴展(scaling)
  • 負載均衡(load-balancing)
  • 自愈(self-healing)
  • leader選舉(leader election)

?

Kubernetes架構(gòu)
Kubernetes架構(gòu)
  • master節(jié)點
    控制和管理整個Kubernetes系統(tǒng)

The master is the control plane of Kubernetes. It consists of several components, such as an API server, a scheduler, and a controller manager.

(The master is responsible
for the global state of the cluster, cluster-level scheduling of pods, and handling of events. Usually, all the master components are set up on a single host. When considering high-availability scenarios or very large clusters, you will want to have master redundancy.)

  • worker節(jié)點
    運行實際部署的應(yīng)用程序

  • Control Plane
    控制整個集群沽瘦。
    它包含以下組件:
    ?? - API Server 組件通信
    ?? - Scheduler(調(diào)度器) 調(diào)度革骨,部署應(yīng)用程序的工作節(jié)點
    ?? - Controller Manager 管理集群,例如: 復(fù)制組件析恋,跟蹤工作節(jié)點良哲,處理節(jié)點失敗等。
    ?? - etcd 集群配置存儲(分布式存儲)

  • Kubelet
    負責(zé)和API Server通信助隧,管理節(jié)點上的容器筑凫。

  • kube-proxy
    它是Kubernetes的服務(wù)代理,負責(zé)負載均衡并村。

?

4. Kubernetes的優(yōu)勢

  • 簡化了應(yīng)用部署
    Kubernetes將所有的工作節(jié)點暴露為一個單獨的部署平臺巍实,開發(fā)人員不需要知道服務(wù)器的細節(jié)。

  • 提高了硬件的利用率
    讓你從基礎(chǔ)架構(gòu)解耦哩牍。
    Kubernetes會根據(jù)你的描述需求棚潦,從現(xiàn)有的節(jié)點中挑選出最合適的節(jié)點來運行你的應(yīng)用程序。
    Kubernetes能讓應(yīng)用移動姐叁,找到最優(yōu)的節(jié)點瓦盛。

  • 健康檢查和自愈
    Kubernetes監(jiān)控應(yīng)用洗显,一旦發(fā)生節(jié)點失敗外潜,會自動把應(yīng)用調(diào)度到其它節(jié)點原环。
    這讓運維團隊把精力放在修復(fù)壞掉的節(jié)點上,而不是去重新分配節(jié)點处窥。
    如果你的應(yīng)用有足夠的閑置節(jié)點嘱吗,甚至可以暫時不用理會失敗,比如在凌晨滔驾。

  • 自動擴容
    Kubernetes監(jiān)控應(yīng)用谒麦,自動調(diào)整應(yīng)用的實例數(shù)量。
    如果Kubernetes運行在云架構(gòu)上哆致,彈性擴容會變得更加容易绕德。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摊阀,隨后出現(xiàn)的幾起案子耻蛇,更是在濱河造成了極大的恐慌,老刑警劉巖胞此,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臣咖,死亡現(xiàn)場離奇詭異,居然都是意外死亡漱牵,警方通過查閱死者的電腦和手機夺蛇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酣胀,“玉大人刁赦,你說我怎么就攤上這事∥畔猓” “怎么了甚脉?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長儒溉。 經(jīng)常有香客問我宦焦,道長,這世上最難降的妖魔是什么顿涣? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任波闹,我火速辦了婚禮,結(jié)果婚禮上涛碑,老公的妹妹穿的比我還像新娘精堕。我一直安慰自己,他們只是感情好蒲障,可當(dāng)我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布歹篓。 她就那樣靜靜地躺著瘫证,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庄撮。 梳的紋絲不亂的頭發(fā)上背捌,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天,我揣著相機與錄音洞斯,去河邊找鬼毡庆。 笑死,一個胖子當(dāng)著我的面吹牛烙如,可吹牛的內(nèi)容都是我干的么抗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼亚铁,長吁一口氣:“原來是場噩夢啊……” “哼蝇刀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起徘溢,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤吞琐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甸昏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顽分,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年施蜜,在試婚紗的時候發(fā)現(xiàn)自己被綠了卒蘸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡翻默,死狀恐怖缸沃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情修械,我是刑警寧澤趾牧,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站肯污,受9級特大地震影響翘单,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹦渣,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一哄芜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柬唯,春花似錦认臊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剧腻。三九已至,卻和暖如春涂屁,著一層夾襖步出監(jiān)牢的瞬間书在,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工胯陋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕊温,地道東北人袱箱。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓遏乔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親发笔。 傳聞我的和親對象是個殘疾皇子盟萨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,435評論 2 348