這一次,我們帶你搞懂看似神秘的Kubernetes!

自從上次跟女朋友嘮了嘮“容器技術(shù)”之后,似懂非懂、欲拒還迎的女朋友仿佛并沒有g(shù)et到云原生、容器與Kubernetes之間的“瓜葛”,每天糾纏著、催促著下一輪的“科普”。于是,我又雙叒叕妥協(xié)了。
那么,這一期,我們主要嘮一嘮Kubernetes。在這里提醒一下大家,想知道更多關(guān)于容器技術(shù)的內(nèi)容,可以看一看《趣說“容器技術(shù)”,女朋友讓我白話它的精彩故事》。同時(shí),我們也會沿著上一期的脈絡(luò)往下說。
好了,我們言歸正傳。
話說,開源之后的Docker容器技術(shù)被炒得熱火朝天,儼然紅得像帶貨界的領(lǐng)軍人物。但是隨著用它的企業(yè)越來越多,大家發(fā)現(xiàn)將Dcoker用于具體業(yè)務(wù)是存在困難的,尤其是編排、管理、調(diào)度等,都非常不容易。這時(shí),人們迫切需要一個(gè)Docker管理系統(tǒng),對容器進(jìn)行靈活的管理。?

細(xì)心的企業(yè)逐漸發(fā)現(xiàn)這也是商機(jī),時(shí)間來到2013年,那是一個(gè)炎熱的夏天,谷歌內(nèi)部有一群非常有想法的產(chǎn)品經(jīng)理,腦洞了一個(gè)想法,我們何不開發(fā)一個(gè)開源的容器管理系統(tǒng)?于是開始在谷歌內(nèi)部進(jìn)行游說,希望可以得到一定的支持。
按照他們的說法,在預(yù)算緊張的早年間,谷歌為了榨取服務(wù)器的每一點(diǎn)性能,漸漸開始嘗試容器,并且構(gòu)建了一個(gè)名為Borg的集群管理系統(tǒng)。在這套系統(tǒng)下,谷歌的服務(wù)器可以運(yùn)行成千上萬個(gè)任務(wù),提高了計(jì)算效率。
事實(shí)上,他們基于容器的集群管理平臺,也是從Borg蛻變來的。
苦心人,天不負(fù),三千越甲可吞吳。終于,他們的游說得到了反饋。于是,谷歌開始做基于容器的集群管理平臺——Kubernetes。
2014年6月,Google正式公布并開源Kubernetes。
Emmmm,Kubernetes這個(gè)單詞來自于希臘語,意思是舵手或領(lǐng)航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個(gè)字符。
在宣布開源之后,微軟、Red Hat、IBM、Docker、CoreOS、Mesosphere、Saltstack等公司聞風(fēng)而來,紛紛投入K8s溫暖的懷抱。
此后,VMware、HP、Intel等公司,也陸續(xù)加入。
2015年7月,Google正式加入OpenStack基金會。與此同時(shí),Kuberentes v1.0正式發(fā)布。
目前,kubernetes的版本已經(jīng)發(fā)展到V1.13。
截止目前,K8s的煉金之旅正式完成。
如今,K8s在容器領(lǐng)域、云原生領(lǐng)域初露鋒芒,未來亦將潛力無限。
這就是K8s,簡而言之,它就是基于容器的集群管理平臺。
緊接著,我們來看一下K8s的架構(gòu),其實(shí)一個(gè)K8s系統(tǒng),通常被成為一個(gè)K8s集群(Cluster)。該集群主要包括兩個(gè)部分:一個(gè)Master節(jié)點(diǎn)(主節(jié)點(diǎn))、一群Node節(jié)點(diǎn)(計(jì)算節(jié)點(diǎn))。其中,Master節(jié)點(diǎn)負(fù)責(zé)管理和控制;Node節(jié)點(diǎn)是工作負(fù)載節(jié)點(diǎn),包含具體的容器。
Master節(jié)點(diǎn)?

Master節(jié)點(diǎn)包括API Server、Scheduler、Controller manager、etcd。
API Server是整個(gè)系統(tǒng)的對外接口,供客戶端和其它組件調(diào)用,相當(dāng)于“營業(yè)廳”。
Scheduler負(fù)責(zé)對集群內(nèi)部的資源進(jìn)行調(diào)度,相當(dāng)于“調(diào)度室”。
Controller manager負(fù)責(zé)管理控制器,相當(dāng)于“大總管”。
Node節(jié)點(diǎn)?

Node節(jié)點(diǎn)包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod。
Pod是Kubernetes最基本的操作單元。一個(gè)Pod代表著集群中運(yùn)行的一個(gè)進(jìn)程,它內(nèi)部封裝了一個(gè)或多個(gè)緊密相關(guān)的容器。
Docker,創(chuàng)建容器。
Kubelet,負(fù)責(zé)監(jiān)視指派到它所在Node上的Pod,包括創(chuàng)建、修改、監(jiān)控、刪除等。
Kube-proxy,主要負(fù)責(zé)為Pod對象提供代理。
Fluentd,主要負(fù)責(zé)日志收集、存儲與查詢。?

那么,K8s有什么樣的優(yōu)缺點(diǎn)?
我們知道,Kubernetes并不是市場唯一的容器管理平臺,但仍然受到極大地歡迎。我們來看一下原因。
1、使用簡單。利用Kubernetes,容器化的應(yīng)用程序可以只編寫一次,就能夠在所有類型云供應(yīng)商以及私有云上運(yùn)行。
2、快速簡捷。開發(fā)人員可以快速部署應(yīng)用程序。
3、降低硬件使用量,可以減少40-50%。
4、開源社區(qū)大。Google將其發(fā)布為開源項(xiàng)目,吸引了1000+的社區(qū)貢獻(xiàn)者,34000次commit。
與此同時(shí),K8s有著不可規(guī)避的缺點(diǎn)。
1、首次部署比較艱難,困難度很高。
2、作為容器的第三方管理系統(tǒng),容器本身的缺陷影響K8s提供的服務(wù)。
3、Kubernetes欠缺的領(lǐng)域是調(diào)度器。
隨著云原生的深入發(fā)展,容器技術(shù)再次彰顯其價(jià)值,其中Kubernetes作為容器的編排、管理平臺或系統(tǒng),將會發(fā)揮至關(guān)重要的作用,前途不可限量。
......
好了,云原生、容器技術(shù)、K8s終于和盤托出,我也可以跟女朋友交差了。