00 | 開篇詞 | 打通“容器技術(shù)”的任督二脈

你好,我是張磊,Kubernetes 社區(qū)的一位資深成員和項(xiàng)目維護(hù)者。

2012 年,我還在浙大讀書的時(shí)候,就有幸組建了一個(gè)云計(jì)算與 PaaS 基礎(chǔ)設(shè)施相關(guān)的科研團(tuán)隊(duì),就這樣,我從早期的 Cloud Foundry 社區(qū)開始,正式與容器結(jié)緣。

這幾年里,我大多數(shù)時(shí)間都在 Kubernetes 項(xiàng)目里從事上游技術(shù)工作,也得以作為一名從業(yè)者和社區(qū)成員的身份,參與和親歷了容器技術(shù)從“初出茅廬”到“塵埃落定”的全過程。

而即使從 2013 年 Docker 項(xiàng)目發(fā)布開始算起,這次變革也不過短短 5 年時(shí)間,可在現(xiàn)如今的技術(shù)圈兒里,不懂容器,沒聽過 Kubernetes,你還真不好意思跟人打招呼。

容器技術(shù)這樣一個(gè)新生事物,完全重塑了整個(gè)云計(jì)算市場(chǎng)的形態(tài)。它不僅催生出了一批年輕有為的容器技術(shù)人,更培育出了一個(gè)具有相當(dāng)規(guī)模的開源基礎(chǔ)設(shè)施技術(shù)市場(chǎng)。

在這個(gè)市場(chǎng)里,不僅有 Google、Microsoft 等技術(shù)巨擘們廝殺至今,更有無數(shù)的國(guó)內(nèi)外創(chuàng)業(yè)公司前仆后繼。而在國(guó)內(nèi),甚至連以前對(duì)開源基礎(chǔ)設(shè)施領(lǐng)域涉足不多的 BAT、螞蟻、滴滴這樣的巨頭們,也都從 AI、云計(jì)算、微服務(wù)、基礎(chǔ)設(shè)施等維度多管齊下,爭(zhēng)相把容器和Kubernetes項(xiàng)目樹立為戰(zhàn)略重心之一。

就在這場(chǎng)因“容器”而起的技術(shù)變革中,Kubernetes 項(xiàng)目已然成為容器技術(shù)的事實(shí)標(biāo)準(zhǔn),重新定義了基礎(chǔ)設(shè)施領(lǐng)域?qū)?yīng)用編排與管理的種種可能。

2014 年后,我開始以遠(yuǎn)程的方式,全職在 Kubernetes 和Kata Containers 社區(qū)從事上游開發(fā)工作,先后發(fā)起了容器鏡像親密性調(diào)度、基于等價(jià)類的調(diào)度優(yōu)化等多個(gè)核心特性,參與了容器運(yùn)行時(shí)接口、安全容器沙盒等多個(gè)基礎(chǔ)特性的設(shè)計(jì)和研發(fā)。還有幸作為主要的研發(fā)人員和維護(hù)者之一,親歷了 Serverless Container 概念的誕生與崛起。

在 2015 年,我發(fā)起和組織撰寫了《Docker 容器與容器云》一書,希望幫助更多的人利用容器解決實(shí)際場(chǎng)景中的問題。時(shí)至今日,這本書的第 2 版也已經(jīng)出版快 2年了,受到了廣大容器技術(shù)讀者們的好評(píng)。

2018 年,我又赴西雅圖,在微軟研究院(MSR)云計(jì)算與存儲(chǔ)研究組,專門從事基于Kubernetes 的深度學(xué)習(xí)基礎(chǔ)設(shè)施相關(guān)的研究工作。

我與容器打交道的這些年,一直在與關(guān)注容器生態(tài)的工程師們交流,并經(jīng)常探討容器在落地過程中遇到的問題。從這些交流中,我發(fā)現(xiàn)總有很多相似的問題被反復(fù)提及,比如:

1. 為什么容器里只能跑“一個(gè)進(jìn)程”?

2. 為什么我原先一直在用的某個(gè) JVM 參數(shù),在容器里就不好使了?

3. 為什么 Kubernetes 就不能固定 IP 地址?容器網(wǎng)絡(luò)連不通又該如何去 Debug?

4. Kubernetes 中 StatefulSet 和 Operator 到底什么區(qū)別?PV 和 PVC 這些概念又該怎么用?

這些問題乍一看與我們平常的認(rèn)知非常矛盾,但它們的答案和原理卻并不復(fù)雜。不過很遺憾,對(duì)于剛剛開始學(xué)習(xí)容器的技術(shù)人員來說,它們卻很難用一兩句話就能解釋清楚。

究其原因在于,從過去以物理機(jī)和虛擬機(jī)為主體的開發(fā)運(yùn)維環(huán)境,向以容器為核心的基礎(chǔ)設(shè)施的轉(zhuǎn)變過程,并不是一次溫和的改革,而是涵蓋了對(duì)網(wǎng)絡(luò)、存儲(chǔ)、調(diào)度、操作系統(tǒng)、分布式原理等各個(gè)方面的容器化理解和改造。

這就導(dǎo)致了很多初學(xué)者,對(duì)于容器技術(shù)棧表現(xiàn)出來的這些難題,要么知識(shí)儲(chǔ)備不足,要么雜亂無章、無法形成體系。這,也是很多初次參與 PaaS 項(xiàng)目的從業(yè)者們共同面臨的一個(gè)困境。

其實(shí),容器技術(shù)體系看似紛亂繁雜,卻存在著很多可以“牽一發(fā)而動(dòng)全身”的主線。比如,Linux 的進(jìn)程模型對(duì)于容器本身的重要意義;或者,“控制器”模式對(duì)整個(gè) Kubernetes 項(xiàng)目提綱挈領(lǐng)的作用。

但是,這些關(guān)于 Linux 內(nèi)核、分布式系統(tǒng)、網(wǎng)絡(luò)、存儲(chǔ)等方方面面的積累,并不會(huì)在Docker或者 Kubernetes 的文檔中交代清楚。可偏偏就是它們,才是真正掌握容器技術(shù)體系的精髓所在,是每一位技術(shù)從業(yè)者需要悉心修煉的“內(nèi)功”。

而這,也正是我開設(shè)這個(gè)專欄的初衷。

我希望借由這個(gè)專欄,給你講清楚容器背后的這些技術(shù)本質(zhì)與設(shè)計(jì)思想,并結(jié)合著對(duì)核心特性的剖析與實(shí)踐,加深你對(duì)容器技術(shù)的理解。為此,我把專欄劃分成了 4 大模塊:

1. “白話”容器技術(shù)基礎(chǔ):我希望用饒有趣味的解說,給你梳理容器技術(shù)生態(tài)的發(fā)展脈絡(luò),用最通俗易懂的語言描述容器底層技術(shù)的實(shí)現(xiàn)方式,讓你知其然,也知其所以然。

2. Kubernetes 集群的搭建與實(shí)踐: Kubernetes 集群號(hào)稱“非常復(fù)雜”,但是如果明白了其中的架構(gòu)和原理,選擇了正確的工具和方法,它的搭建卻也可以“一鍵安裝”,它的應(yīng)用部署也可以淺顯易懂。

3. 容器編排與 Kubernetes 核心特性剖析:這是這個(gè)專欄最重要的內(nèi)容?!熬幣拧庇肋h(yuǎn)都是容器云項(xiàng)目的靈魂所在,也是 Kubernetes 社區(qū)持久生命力的源泉。在這一模塊,我會(huì)從分布式系統(tǒng)設(shè)計(jì)的視角出發(fā),抽象和歸納出這些特性中體現(xiàn)出來的普遍方法,然后帶著這些指導(dǎo)思想去逐一闡述 Kubernetes 項(xiàng)目關(guān)于編排、調(diào)度和作業(yè)管理的各項(xiàng)核心特性。“不識(shí)廬山真面目,只緣身在此山中”,希望這樣一個(gè)與眾不同的角度,能夠給你以全新的啟發(fā)。

4. Kubernetes 開源社區(qū)與生態(tài):“開源生態(tài)”永遠(yuǎn)都是容器技術(shù)和 Kubernetes 項(xiàng)目成功的關(guān)鍵。在這個(gè)模塊,我會(huì)和你一起探討,容器社區(qū)在開源軟件工程指導(dǎo)下的演進(jìn)之路;帶你思考,如何同團(tuán)隊(duì)一起平衡內(nèi)外部需求,讓自己逐漸成為社區(qū)中不可或缺的一員。

我希望通過這些對(duì)容器與 Kubernetes 項(xiàng)目的逐層剖析,能夠讓你面對(duì)容器化浪潮時(shí)不再躊躇無措,有一種撥云見日的酣暢淋漓。

最后,我想再和你分享一個(gè)故事。

2015 年我在 InfoQ 舉辦的第一屆容器技術(shù)大會(huì)上,結(jié)識(shí)了當(dāng)時(shí)CoreOS 的布道師KelseyHightower,他熱情地和大家一起安裝和體驗(yàn)微信,談笑風(fēng)生間,還時(shí)不時(shí)地安利一番自家產(chǎn)品。

但兩年后也就是 2017 年,Kelsey 已經(jīng)是全世界容器圈兒的意見領(lǐng)袖,是 Google 公司Kubernetes 項(xiàng)目的首席布道師,而他的座右銘也變?yōu)榱恕爸徊嫉?,不推銷”。此時(shí),就算你漂洋過海想要親自拜會(huì) Kelsey ,恐怕也得先預(yù)約下時(shí)間了。

誠(chéng)然,Kelsey 的“一夜成名”,與他的勤奮和天賦密不可分,但他對(duì)這次“容器”變革走向的準(zhǔn)確把握卻也是功不可沒。這也正應(yīng)了一句名言:一個(gè)人的命運(yùn)啊,當(dāng)然要靠自我奮斗,但是也要考慮到歷史的行程。

眼下,你我可能已經(jīng)錯(cuò)過了互聯(lián)網(wǎng)技術(shù)大爆炸的時(shí)代,也沒有在數(shù)字貨幣早期的狂熱里分到一杯羹??删驮诖藭r(shí)此刻,在沉寂了多年的云計(jì)算與基礎(chǔ)設(shè)施領(lǐng)域,一次以“容器”為名的歷史變革,正呼之欲出。這一次,我們又有什么理由作壁上觀呢?

如果你也想登上“容器”這趟高速前進(jìn)的列車,我相信這個(gè)專欄,可以幫助你打通學(xué)習(xí)容器技術(shù)的“任督二脈”。在專欄開始,我首先為你準(zhǔn)備了 4 篇預(yù)習(xí)文章,詳細(xì)地梳理了容器技術(shù)自興起到現(xiàn)在的發(fā)展歷程,同時(shí)也回答了“Kubernetes 為什么會(huì)贏”這個(gè)重要的問題,算是我額外為你準(zhǔn)備的一份開學(xué)禮物吧。

機(jī)會(huì)總是留給有準(zhǔn)備的人,現(xiàn)在就讓我們一起開啟這次充滿挑戰(zhàn)的容器之旅!


文章回復(fù):

llitfkitfk@dockone.io

如果拿汽車來做比:

Docker好比汽車引擎,

Dockerfile相當(dāng)于汽車藍(lán)圖,

Docker image(鏡像)就是汽車樣板,

Docker container(容器)類似于汽車的零部件,

Docker Registry可以看作是4s店,

Docker Compose就像老司機(jī),

Docker Volume就像是汽車的油箱, 如果把容器間內(nèi)的io數(shù)據(jù)流比喻成汽油,

Docker Swarm(或者K8s)就是交通樞紐。

2018-09-09

歲月~靜好

第一次買網(wǎng)絡(luò)課程,但愿學(xué)完之后對(duì)容器和k8s有自己的理解吧,雖然現(xiàn)在有些看不懂。

2018-08-27

☆ 微~光 ☆

今天剛用二進(jìn)制文件的方式,搭建了一套完整的k8s集群,雖然搭建成功了,但是對(duì)里面參數(shù)還是不是很清楚,所以還需要好好深入學(xué)習(xí)一下,希望這個(gè)課程能帶給我大的收獲!

2018-08-27

作者回復(fù)

二進(jìn)制絕對(duì)是hard模式

2018-08-28

推薦一下https://github.com/knarfeh/k8s-digitalocean-terraform這個(gè)項(xiàng)目,可以在Digital Ocean 上一鍵啟動(dòng) kubernetes 機(jī)器

2018-09-03

arcTanh

竟然讓我這個(gè)半瓶子算法工程師聽的熱血沸騰啊

2018-08-28

作者回復(fù)

相信我,開發(fā)人員才是容器技術(shù)的真正用戶,AI基礎(chǔ)設(shè)施了解一下

2018-08-28

ylck

cka 管理員再來復(fù)習(xí)下。 哈哈。

2018-08-28

付盼星

k8s和yarn到底是相互如何配合呢,最近看yarn,容器化進(jìn)程目前還是實(shí)驗(yàn)特性,官方在未來計(jì)劃中說,為了做到暫停機(jī)會(huì)容器而不是殺死機(jī)會(huì)容器以最大化資源利用,需要用到容器技術(shù),就是最常見的pause功能,讓我在思考,到底k8s的強(qiáng)項(xiàng)是資源調(diào)度還是應(yīng)用編排呢,如果兩個(gè)共同協(xié)作,到底利用了各自哪些優(yōu)勢(shì)之處解決了哪些問題。

2018-08-28

作者回復(fù)

可以直接給你結(jié)論:kubernetes更關(guān)注容器與編排,在資源管理方面優(yōu)勢(shì)不大。但正確的姿勢(shì),是用好kubernetes 可擴(kuò)展能力,讓它跟yarn等一起都發(fā)揮出真正的實(shí)力。國(guó)內(nèi)阿里和螞蟻在這一塊走得不錯(cuò)。

@特

我主要涉及到openshift的運(yùn)維工作,而openshift是基于k8s的一套完整的devops解決方案。我在使用openshift的過程中發(fā)現(xiàn)容器化對(duì)于無狀態(tài)的服務(wù)確實(shí)非常友好,但是對(duì)于需要存儲(chǔ)的和需要固定ip的服務(wù)非常不友好。比如zk集群,MySQL的MGR集群,ES集群等等。部署難度和運(yùn)維難度都非常高。而statefulsets并沒有想象中的好用

2018-08-28

作者回復(fù)

有狀態(tài)應(yīng)用管理自然是最難的,要學(xué)完整個(gè)專欄的所有內(nèi)容恐怕才有更深的體會(huì)

趙冬晨

從接觸市面上大部分web容器(tomcat.glassfish.weblogic.websphere.jetty等等),就覺得切換環(huán)境部署太費(fèi)勁了,尤其是要跑兼容性就需要安裝不同版本,太難受了…后來接觸到了docker,絕對(duì)好牛逼啊,真是超級(jí)方便,再后來手里服務(wù)器多了就接觸到了kubernetes,覺得這個(gè)更牛逼啊,超舒服,得好好學(xué)學(xué),這趟車我上了,滴,滴滴

2018-08-29

作者回復(fù)

恭喜,容器晉級(jí)之路你算是上道了

jerryduren

聽了前面的覺得上癮了,期待更新快一點(diǎn).另外希望聽到虛擬機(jī)容器,裸機(jī)容器,虛擬機(jī)容器三者間優(yōu)劣勢(shì)系統(tǒng)的對(duì)比分析方面的內(nèi)容

2018-09-04

作者回復(fù)

當(dāng)然有

LQ

這兩天剛開始學(xué)k8s,相關(guān)專欄就上了,真是及時(shí)。

2018-08-27

杜鵬

請(qǐng)問后期的課程會(huì)介紹k8s和yarn結(jié)合的案例嗎?能否先給一些資料熟悉一下?現(xiàn)在項(xiàng)目中需要用到k8s的資源管理,總的來說是怎么省錢。

2018-09-19

作者回復(fù)

會(huì)講資源管理

2018-09-19

您提到: kubernetes更關(guān)注容器與編排,在資源管理方面優(yōu)勢(shì)不大。但正確的姿勢(shì),是用好kubernetes 可擴(kuò)展能力,讓它跟yarn等一起都發(fā)揮出真正的實(shí)力。國(guó)內(nèi)阿里和螞蟻在這一塊走得不錯(cuò)。

強(qiáng)烈跪求講一下如何彌補(bǔ)k8s的資源管理缺點(diǎn),與yarn結(jié)合這方面的知識(shí)與經(jīng)驗(yàn)阿?。?!

2018-09-08

作者回復(fù)

說白了就是給kubernetes 寫自定義調(diào)度器。

2018-09-08

joy

磊哥,遠(yuǎn)程全職在社區(qū)工作還有工資?工資比日常在公司上班掙得多?

2018-09-07

作者回復(fù)

當(dāng)然得有sponsor

2018-09-08

loda

想咨詢下kubeadm適合生產(chǎn)環(huán)境安裝集群么

2018-09-07

作者回復(fù)

小規(guī)??梢?。

2018-09-07

cxyfreedom

搭建環(huán)境太痛苦了,還不容易集群搭建成功了,部署插件又出問題,有時(shí)候找各種別人的方法還無效

2018-08-29

作者回復(fù)

弄懂這些插件的工作原理才是正解。

日拱一卒

我的項(xiàng)目k8s有快半年了,但是對(duì)k8s還是沒有系統(tǒng)學(xué)習(xí),遇到問題經(jīng)常是google去解決,希望可以通過這次課程,對(duì)它有一個(gè)系統(tǒng)的理解。

2018-08-29

Alery

聽得熱血沸騰

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容