你好,我是張磊,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
聽得熱血沸騰