你好偏序,我是張磊,Kubernetes 社區(qū)的一位資深成員和項目維護者改艇。
2012 年收班,我還在浙大讀書的時候,就有幸組建了一個云計算與 PaaS 基礎設施相關的科研團隊遣耍,就這樣闺阱,我從早期的 Cloud Foundry 社區(qū)開始炮车,正式與容器結緣舵变。
這幾年里,我大多數(shù)時間都在 Kubernetes 項目里從事上游技術工作瘦穆,也得以作為一名從業(yè)者和社區(qū)成員的身份纪隙,參與和親歷了容器技術從“初出茅廬”到“塵埃落定”的全過程。
而即使從 2013 年 Docker 項目發(fā)布開始算起扛或,這次變革也不過短短 5 年時間绵咱,可在現(xiàn)如今的技術圈兒里,不懂容器熙兔,沒聽過 Kubernetes悲伶,你還真不好意思跟人打招呼。
容器技術這樣一個新生事物住涉,完全重塑了整個云計算市場的形態(tài)麸锉。它不僅催生出了一批年輕有為的容器技術人,更培育出了一個具有相當規(guī)模的開源基礎設施技術市場舆声。
在這個市場里花沉,不僅有 Google、Microsoft 等技術巨擘們廝殺至今媳握,更有無數(shù)的國內(nèi)外創(chuàng)業(yè)公司前仆后繼碱屁。而在國內(nèi),甚至連以前對開源基礎設施領域涉足不多的 BAT蛾找、螞蟻娩脾、滴滴這樣的巨頭們,也都從 AI打毛、云計算柿赊、微服務架曹、基礎設施等維度多管齊下,爭相把容器和Kubernetes項目樹立為戰(zhàn)略重心之一闹瞧。
就在這場因“容器”而起的技術變革中绑雄,Kubernetes 項目已然成為容器技術的事實標準,重新定義了基礎設施領域對應用編排與管理的種種可能奥邮。
2014 年后万牺,我開始以遠程的方式,全職在 Kubernetes 和Kata Containers 社區(qū)從事上游開發(fā)工作洽腺,先后發(fā)起了容器鏡像親密性調(diào)度脚粟、基于等價類的調(diào)度優(yōu)化等多個核心特性,參與了容器運行時接口蘸朋、安全容器沙盒等多個基礎特性的設計和研發(fā)核无。還有幸作為主要的研發(fā)人員和維護者之一,親歷了 Serverless Container 概念的誕生與崛起藕坯。
在 2015 年团南,我發(fā)起和組織撰寫了《Docker 容器與容器云》一書,希望幫助更多的人利用容器解決實際場景中的問題炼彪。時至今日吐根,這本書的第 2 版也已經(jīng)出版快 2年了,受到了廣大容器技術讀者們的好評辐马。
2018 年拷橘,我又赴西雅圖,在微軟研究院(MSR)云計算與存儲研究組喜爷,專門從事基于Kubernetes 的深度學習基礎設施相關的研究工作冗疮。
我與容器打交道的這些年,一直在與關注容器生態(tài)的工程師們交流檩帐,并經(jīng)常探討容器在落地過程中遇到的問題术幔。從這些交流中,我發(fā)現(xiàn)總有很多相似的問題被反復提及轿塔,比如:
1. 為什么容器里只能跑“一個進程”特愿?
2. 為什么我原先一直在用的某個 JVM 參數(shù),在容器里就不好使了勾缭?
3. 為什么 Kubernetes 就不能固定 IP 地址揍障?容器網(wǎng)絡連不通又該如何去 Debug?
4. Kubernetes 中 StatefulSet 和 Operator 到底什么區(qū)別俩由?PV 和 PVC 這些概念又該怎么用毒嫡?
這些問題乍一看與我們平常的認知非常矛盾,但它們的答案和原理卻并不復雜。不過很遺憾兜畸,對于剛剛開始學習容器的技術人員來說努释,它們卻很難用一兩句話就能解釋清楚。
究其原因在于咬摇,從過去以物理機和虛擬機為主體的開發(fā)運維環(huán)境伐蒂,向以容器為核心的基礎設施的轉變過程,并不是一次溫和的改革肛鹏,而是涵蓋了對網(wǎng)絡逸邦、存儲、調(diào)度在扰、操作系統(tǒng)缕减、分布式原理等各個方面的容器化理解和改造。
這就導致了很多初學者芒珠,對于容器技術棧表現(xiàn)出來的這些難題桥狡,要么知識儲備不足,要么雜亂無章皱卓、無法形成體系裹芝。這,也是很多初次參與 PaaS 項目的從業(yè)者們共同面臨的一個困境好爬。
其實局雄,容器技術體系看似紛亂繁雜,卻存在著很多可以“牽一發(fā)而動全身”的主線存炮。比如,Linux 的進程模型對于容器本身的重要意義蜈漓;或者穆桂,“控制器”模式對整個 Kubernetes 項目提綱挈領的作用。
但是融虽,這些關于 Linux 內(nèi)核享完、分布式系統(tǒng)、網(wǎng)絡有额、存儲等方方面面的積累般又,并不會在Docker或者 Kubernetes 的文檔中交代清楚∥∮樱可偏偏就是它們茴迁,才是真正掌握容器技術體系的精髓所在,是每一位技術從業(yè)者需要悉心修煉的“內(nèi)功”萤衰。
而這堕义,也正是我開設這個專欄的初衷。
我希望借由這個專欄脆栋,給你講清楚容器背后的這些技術本質(zhì)與設計思想倦卖,并結合著對核心特性的剖析與實踐洒擦,加深你對容器技術的理解。為此怕膛,我把專欄劃分成了 4 大模塊:
1. “白話”容器技術基礎:我希望用饒有趣味的解說熟嫩,給你梳理容器技術生態(tài)的發(fā)展脈絡,用最通俗易懂的語言描述容器底層技術的實現(xiàn)方式褐捻,讓你知其然邦危,也知其所以然。
2. Kubernetes 集群的搭建與實踐: Kubernetes 集群號稱“非常復雜”舍扰,但是如果明白了其中的架構和原理倦蚪,選擇了正確的工具和方法,它的搭建卻也可以“一鍵安裝”边苹,它的應用部署也可以淺顯易懂陵且。
3. 容器編排與 Kubernetes 核心特性剖析:這是這個專欄最重要的內(nèi)容「鍪“編排”永遠都是容器云項目的靈魂所在慕购,也是 Kubernetes 社區(qū)持久生命力的源泉。在這一模塊茬底,我會從分布式系統(tǒng)設計的視角出發(fā)沪悲,抽象和歸納出這些特性中體現(xiàn)出來的普遍方法,然后帶著這些指導思想去逐一闡述 Kubernetes 項目關于編排阱表、調(diào)度和作業(yè)管理的各項核心特性殿如。“不識廬山真面目最爬,只緣身在此山中”涉馁,希望這樣一個與眾不同的角度,能夠給你以全新的啟發(fā)爱致。
4. Kubernetes 開源社區(qū)與生態(tài):“開源生態(tài)”永遠都是容器技術和 Kubernetes 項目成功的關鍵烤送。在這個模塊,我會和你一起探討糠悯,容器社區(qū)在開源軟件工程指導下的演進之路帮坚;帶你思考,如何同團隊一起平衡內(nèi)外部需求互艾,讓自己逐漸成為社區(qū)中不可或缺的一員试和。
我希望通過這些對容器與 Kubernetes 項目的逐層剖析,能夠讓你面對容器化浪潮時不再躊躇無措忘朝,有一種撥云見日的酣暢淋漓灰署。
最后,我想再和你分享一個故事。
2015 年我在 InfoQ 舉辦的第一屆容器技術大會上溉箕,結識了當時CoreOS 的布道師KelseyHightower晦墙,他熱情地和大家一起安裝和體驗微信,談笑風生間肴茄,還時不時地安利一番自家產(chǎn)品晌畅。
但兩年后也就是 2017 年,Kelsey 已經(jīng)是全世界容器圈兒的意見領袖寡痰,是 Google 公司Kubernetes 項目的首席布道師抗楔,而他的座右銘也變?yōu)榱恕爸徊嫉溃煌其N”拦坠。此時连躏,就算你漂洋過海想要親自拜會 Kelsey ,恐怕也得先預約下時間了贞滨。
誠然入热,Kelsey 的“一夜成名”,與他的勤奮和天賦密不可分晓铆,但他對這次“容器”變革走向的準確把握卻也是功不可沒勺良。這也正應了一句名言:一個人的命運啊,當然要靠自我奮斗骄噪,但是也要考慮到歷史的行程尚困。
眼下,你我可能已經(jīng)錯過了互聯(lián)網(wǎng)技術大爆炸的時代链蕊,也沒有在數(shù)字貨幣早期的狂熱里分到一杯羹事甜。可就在此時此刻示弓,在沉寂了多年的云計算與基礎設施領域讳侨,一次以“容器”為名的歷史變革,正呼之欲出奏属。這一次,我們又有什么理由作壁上觀呢潮峦?
如果你也想登上“容器”這趟高速前進的列車囱皿,我相信這個專欄,可以幫助你打通學習容器技術的“任督二脈”忱嘹。在專欄開始嘱腥,我首先為你準備了 4 篇預習文章,詳細地梳理了容器技術自興起到現(xiàn)在的發(fā)展歷程拘悦,同時也回答了“Kubernetes 為什么會贏”這個重要的問題齿兔,算是我額外為你準備的一份開學禮物吧。
機會總是留給有準備的人,現(xiàn)在就讓我們一起開啟這次充滿挑戰(zhàn)的容器之旅分苇!
文章回復:
llitfkitfk@dockone.io
如果拿汽車來做比:
Docker好比汽車引擎添诉,
Dockerfile相當于汽車藍圖,
Docker image(鏡像)就是汽車樣板医寿,
Docker container(容器)類似于汽車的零部件栏赴,
Docker Registry可以看作是4s店,
Docker Compose就像老司機,
Docker Volume就像是汽車的油箱, 如果把容器間內(nèi)的io數(shù)據(jù)流比喻成汽油,
Docker Swarm(或者K8s)就是交通樞紐靖秩。
2018-09-09
歲月~靜好
第一次買網(wǎng)絡課程须眷,但愿學完之后對容器和k8s有自己的理解吧,雖然現(xiàn)在有些看不懂沟突。
2018-08-27
☆ 微~光 ☆
今天剛用二進制文件的方式花颗,搭建了一套完整的k8s集群,雖然搭建成功了惠拭,但是對里面參數(shù)還是不是很清楚扩劝,所以還需要好好深入學習一下,希望這個課程能帶給我大的收獲求橄!
2018-08-27
作者回復
二進制絕對是hard模式
2018-08-28
推薦一下https://github.com/knarfeh/k8s-digitalocean-terraform這個項目今野,可以在Digital Ocean 上一鍵啟動 kubernetes 機器
2018-09-03
arcTanh
竟然讓我這個半瓶子算法工程師聽的熱血沸騰啊
2018-08-28
作者回復
相信我,開發(fā)人員才是容器技術的真正用戶罐农,AI基礎設施了解一下
2018-08-28
ylck
cka 管理員再來復習下条霜。 哈哈。
2018-08-28
付盼星
k8s和yarn到底是相互如何配合呢涵亏,最近看yarn宰睡,容器化進程目前還是實驗特性,官方在未來計劃中說气筋,為了做到暫停機會容器而不是殺死機會容器以最大化資源利用拆内,需要用到容器技術,就是最常見的pause功能宠默,讓我在思考麸恍,到底k8s的強項是資源調(diào)度還是應用編排呢,如果兩個共同協(xié)作搀矫,到底利用了各自哪些優(yōu)勢之處解決了哪些問題抹沪。
2018-08-28
作者回復
可以直接給你結論:kubernetes更關注容器與編排,在資源管理方面優(yōu)勢不大瓤球。但正確的姿勢融欧,是用好kubernetes 可擴展能力,讓它跟yarn等一起都發(fā)揮出真正的實力卦羡。國內(nèi)阿里和螞蟻在這一塊走得不錯噪馏。
@特
我主要涉及到openshift的運維工作麦到,而openshift是基于k8s的一套完整的devops解決方案。我在使用openshift的過程中發(fā)現(xiàn)容器化對于無狀態(tài)的服務確實非常友好欠肾,但是對于需要存儲的和需要固定ip的服務非常不友好瓶颠。比如zk集群,MySQL的MGR集群,ES集群等等董济。部署難度和運維難度都非常高步清。而statefulsets并沒有想象中的好用
2018-08-28
作者回復
有狀態(tài)應用管理自然是最難的,要學完整個專欄的所有內(nèi)容恐怕才有更深的體會
趙冬晨
從接觸市面上大部分web容器(tomcat.glassfish.weblogic.websphere.jetty等等)虏肾,就覺得切換環(huán)境部署太費勁了廓啊,尤其是要跑兼容性就需要安裝不同版本,太難受了…后來接觸到了docker封豪,絕對好牛逼啊谴轮,真是超級方便,再后來手里服務器多了就接觸到了kubernetes吹埠,覺得這個更牛逼啊第步,超舒服,得好好學學缘琅,這趟車我上了粘都,滴,滴滴
2018-08-29
作者回復
恭喜刷袍,容器晉級之路你算是上道了
jerryduren
聽了前面的覺得上癮了翩隧,期待更新快一點.另外希望聽到虛擬機容器,裸機容器,虛擬機容器三者間優(yōu)劣勢系統(tǒng)的對比分析方面的內(nèi)容
2018-09-04
作者回復
當然有
LQ
這兩天剛開始學k8s,相關專欄就上了呻纹,真是及時堆生。
2018-08-27
杜鵬
請問后期的課程會介紹k8s和yarn結合的案例嗎?能否先給一些資料熟悉一下雷酪?現(xiàn)在項目中需要用到k8s的資源管理淑仆,總的來說是怎么省錢。
2018-09-19
作者回復
會講資源管理
2018-09-19
您提到: kubernetes更關注容器與編排哥力,在資源管理方面優(yōu)勢不大蔗怠。但正確的姿勢,是用好kubernetes 可擴展能力吩跋,讓它跟yarn等一起都發(fā)揮出真正的實力蟀淮。國內(nèi)阿里和螞蟻在這一塊走得不錯。
強烈跪求講一下如何彌補k8s的資源管理缺點钞澳,與yarn結合這方面的知識與經(jīng)驗阿!U歉俊轧粟!
2018-09-08
作者回復
說白了就是給kubernetes 寫自定義調(diào)度器策治。
2018-09-08
joy
磊哥,遠程全職在社區(qū)工作還有工資兰吟?工資比日常在公司上班掙得多通惫?
2018-09-07
作者回復
當然得有sponsor
2018-09-08
loda
想咨詢下kubeadm適合生產(chǎn)環(huán)境安裝集群么
2018-09-07
作者回復
小規(guī)模可以混蔼。
2018-09-07
cxyfreedom
搭建環(huán)境太痛苦了履腋,還不容易集群搭建成功了,部署插件又出問題惭嚣,有時候找各種別人的方法還無效
2018-08-29
作者回復
弄懂這些插件的工作原理才是正解遵湖。
日拱一卒
我的項目k8s有快半年了,但是對k8s還是沒有系統(tǒng)學習晚吞,遇到問題經(jīng)常是google去解決延旧,希望可以通過這次課程,對它有一個系統(tǒng)的理解槽地。
2018-08-29
Alery
聽得熱血沸騰