從容器到容器云,什么才是 Kubernetes 的本質(zhì)?開源Linux關(guān)注共 3327字,需瀏覽 7分鐘 ·2021-09-03 08:29 這兩年,Kubernetes 擊敗了 Swarm 和 Mesos,幾乎成為容器編排的事實(shí)標(biāo)準(zhǔn),BAT、滴滴、京東、頭條等大廠,都爭(zhēng)相把容器和 K8S 項(xiàng)目作為技術(shù)重心。為什么在眾多容器平臺(tái)中,Kubernetes能夠脫穎而出,是因為Kubernetes的接口和概念設(shè)計(jì)是完全站在應(yīng)用角度而非運(yùn)維角度的。 如果站在傳統(tǒng)運(yùn)維人員的角度看 Kubernetes,會(huì)覺得他是個(gè)奇葩所在,容器還沒創(chuàng)建出來,概念先來一大堆,文檔先讀一大把,編排文件也復(fù)雜,組件也多,讓很多人望而卻步。 但是如果開發(fā)人員的角度,尤其是從微服務(wù)應(yīng)用的架構(gòu)的角度來看Kubernetes,則會(huì)發(fā)現(xiàn),他對(duì)于微服務(wù)的運(yùn)行生命周期和相應(yīng)的資源管控,做了非常好的抽象。如圖中所示,和虛擬機(jī)運(yùn)行傳統(tǒng)應(yīng)用,只需要?jiǎng)?chuàng)建出資源來,并且保證網(wǎng)絡(luò)暢通即可的方式不同,微服務(wù)的運(yùn)行,需要完成左面的一系列工具鏈。你會(huì)發(fā)現(xiàn),Kubernetes都有相應(yīng)的工具鏈可以匹配。 微服務(wù)設(shè)計(jì)重要的一點(diǎn)就是區(qū)分無狀態(tài)和有狀態(tài),在 K8S 中,無狀態(tài)對(duì)應(yīng) deployment,有狀態(tài)對(duì)應(yīng) StatefulSet。 deployment 主要通過副本數(shù),解決橫向擴(kuò)展的問題。 而 StatefulSet 通過一致的網(wǎng)絡(luò) ID,一致的存儲(chǔ),順序的升級(jí),擴(kuò)展,回滾等機(jī)制,保證有狀態(tài)應(yīng)用,很好地利用自己的高可用機(jī)制。因?yàn)榇蠖鄶?shù)集群的高可用機(jī)制,都是可以容忍一個(gè)節(jié)點(diǎn)暫時(shí)掛掉的,但是不能容忍大多數(shù)節(jié)點(diǎn)同時(shí)掛掉。而且高可用機(jī)制雖然可以保證一個(gè)節(jié)點(diǎn)掛掉后回來,有一定的修復(fù)機(jī)制,但是需要知道剛才掛掉的到底是哪個(gè)節(jié)點(diǎn),StatefulSet 的機(jī)制可以讓容器里面的腳本有足夠的信息,處理這些情況,實(shí)現(xiàn)哪怕是有狀態(tài),也能盡快修復(fù)。 微服務(wù)少不了服務(wù)發(fā)現(xiàn),除了應(yīng)用層可以使用 SpringCloud 或者 Dubbo 進(jìn)行服務(wù)發(fā)現(xiàn),在容器平臺(tái)層當(dāng)然是用 Service了,可以實(shí)現(xiàn)負(fù)載均衡,自修復(fù),自動(dòng)關(guān)聯(lián)。 服務(wù)編排,本來 K8S 就是編排的標(biāo)準(zhǔn),可以將 yml 文件放到代碼倉庫中進(jìn)行管理,而通過 deployment 的副本數(shù),可以實(shí)現(xiàn)彈性伸縮。 對(duì)于配置中心,K8S 提供了 configMap,可以在容器啟動(dòng)的時(shí)候,將配置注入到環(huán)境變量或者 Volume 里面。但是唯一的缺點(diǎn)是,注入到環(huán)境變量中的配置不能動(dòng)態(tài)改變了,好在 Volume 里面的可以,只要容器中的進(jìn)程有 reload 機(jī)制,就可以實(shí)現(xiàn)配置的動(dòng)態(tài)下發(fā)了。 統(tǒng)一日志中心,監(jiān)控中心,APM往往需要在 Node 上部署 Agent,來對(duì)日志和指標(biāo)進(jìn)行收集,當(dāng)然每個(gè) Node 上都有,daemonset 的設(shè)計(jì),使得更容易實(shí)現(xiàn)。 Kubernetes本身能力比較弱的就是服務(wù)的治理能力,這一點(diǎn) Service Mesh,可以實(shí)現(xiàn)更加精細(xì)化的服務(wù)治理,進(jìn)行熔斷,路由,降級(jí)等策略。Service Mesh 的實(shí)現(xiàn)往往通過 sidecar 的方式,攔截服務(wù)的流量,進(jìn)行治理。這也得力于 Pod 的理念,一個(gè) Pod 可以有多個(gè)容器,如果當(dāng)初的設(shè)計(jì)沒有 Pod,直接啟動(dòng)的就是容器,會(huì)非常的不方便。所以,掌握容器技術(shù)成為很多公司招聘時(shí)的重要選項(xiàng)。 這兩年,跟朋友探討 K8S落地時(shí),也有一些問題被反復(fù)提及,比如: 為什么容器里只能跑“一個(gè)進(jìn)程”?之前一直用的某個(gè) JVM 參數(shù),在容器里怎么不好使了?為什么 Kubernetes 不能固定 IP 地址?容器網(wǎng)絡(luò)連不通,該如何 Debug?K8S 中 StatefulSet 和 Operator 到底什么區(qū)別?PV 和 PVC 又該怎么用? 這些問題的答案和原理并不復(fù)雜,但很難一兩句話解釋清楚。因?yàn)槿萜骷夹g(shù)涉及操作系統(tǒng)、網(wǎng)絡(luò)、存儲(chǔ)、調(diào)度、分布式原理等方方面面的知識(shí),是個(gè)名副其實(shí)的全棧技術(shù)。 而其技術(shù)體系里那些“牽一發(fā)而動(dòng)全身”的主線,比如 Linux 進(jìn)程模型對(duì)容器本身的重要意義,“控制器”模式對(duì)整個(gè) K8S 項(xiàng)目提綱挈領(lǐng)的作用等等,不會(huì)詳細(xì)展現(xiàn)在 Docker 或 Kubernetes 官方文檔中,但偏偏就是它們,才是掌握容器技術(shù)體系的精髓所在。 說實(shí)話,這幾年 K8s 資料沒少看,但真正有體系的卻不多,張磊的專欄《深入剖析 Kubernetes》算是一個(gè),給我啟發(fā)很大,分享一份他總結(jié)的 K8S核心知識(shí)圖譜,把零散的概念系統(tǒng)地整理在一起,是我的壓箱底存貨:跟著學(xué)下來,不僅讓我對(duì)容器的理解上了一個(gè)新高度,還拓寬了視野。字里行間都能感受到磊哥扎實(shí)的知識(shí)體系,從原理到實(shí)踐都清晰明了,真正彌補(bǔ)了我在 Docker 容器知識(shí)方面的不足,上線那會(huì)兒還是追著更新看的,后來又二刷了一遍。 方法用對(duì)事半功倍,這次我是感受到了。張磊這個(gè)專欄,是我看過最好的 K8s教程,口碑也不錯(cuò),已有近 45,000 人訂閱了,這里推薦給你。 掃碼免費(fèi)試讀????粉絲專屬口令「k8sk8sk8s」立省 ¥80,到手僅 ¥119! 上面提到了,張磊是 Kubernetes 社區(qū)維護(hù)者,也是 Kubernetes 容器運(yùn)行和集群調(diào)度等多個(gè)核心特性的作者之一,長期專注于容器集群管理和云計(jì)算數(shù)據(jù)中心這一塊,曾任職于 Hyper 和微軟研究院 (MSR),連續(xù)三次被微軟授予該領(lǐng)域 MVP。 這兩天,我看 CNCF 基金會(huì)更新了全球技術(shù)監(jiān)督委員會(huì) TOC 的 9 人名單,國內(nèi)唯一入選的就是張磊,不明覺歷。 在專欄中,他用深入淺出的方式,從看似復(fù)雜的 Kubernetes 項(xiàng)目中梳理出一條主線,帶你理解容器和 K8s 背后的設(shè)計(jì)思想和邏輯,從而解決工作中遇到的問題。 專欄總計(jì) 57 講,現(xiàn)已全部更新完畢,認(rèn)真跟下來,感覺收獲非常大。毫不夸張地說,這是一個(gè)可以長期影響你的專欄,不僅脈絡(luò)清晰,而且文字功底了得——真正的高屋建瓴,被同學(xué)評(píng)價(jià)為“站在華山之巔看風(fēng)景”,值得多刷幾遍。 另外,專欄有幾個(gè)非常不得不提的特色:1、“白話”容器技術(shù)基礎(chǔ):用講故事和提問的方式,梳理容器技術(shù)生態(tài)的發(fā)展脈絡(luò),講述容器技術(shù)的來龍去脈與實(shí)現(xiàn)原理。由淺入深,讓人讀起來熱血澎湃,不但一點(diǎn)也不枯燥,還能將道理講得通俗易懂,十分有代入感。 2、從 0 帶你搭建 Kubernetes 集群:除了原理之外,張磊還會(huì)帶你從 0 開始搭建一套 Kubernetes 集群,領(lǐng)略 Kubernetes 集群的“一鍵安裝”。 3、剖析 Kubernetes 核心特性:張磊從分布式系統(tǒng)設(shè)計(jì)的視角出發(fā),抽象和歸納出這些特性中體現(xiàn)出來的普遍方法,然后帶著這些指導(dǎo)思想去逐一闡述 Kubernetes 項(xiàng)目關(guān)于編排、調(diào)度和作業(yè)管理的各項(xiàng)核心特性。 特別要說的是,這個(gè)課在更新完結(jié)一年后,張磊還在寫加餐,可能是單純的分享精神,也是非常走心了,截了一些評(píng)價(jià)供你參考: 這門課我看了不止一遍,已經(jīng)推薦給好幾個(gè)朋友了,其中還有我們技術(shù)總監(jiān)。這里,也推薦給你。 老規(guī)矩:老用戶專屬口令「k8sk8sk8s」立省 ¥80,到手僅 ¥119!新人首單無需口令,特惠價(jià)直接購買! 別的不說,錯(cuò)過張磊這門課,你一定后悔。可能你錯(cuò)過了互聯(lián)網(wǎng)技術(shù)大爆炸的時(shí)代,也沒在數(shù)字貨幣早期狂熱里分到一杯羹。所以,這次以“容器”為名的歷史變革,又有什么理由作壁上觀呢? ?? 點(diǎn)擊「閱讀原文」,免費(fèi)試讀!和張磊一起玩轉(zhuǎn) K8s 進(jìn)大廠! 瀏覽 53點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào) 評(píng)論圖片表情視頻評(píng)價(jià)全部評(píng)論推薦 從容器到容器云,什么才是 Kubernetes 的本質(zhì)?無敵碼農(nóng)0從容器到容器云,什么才是 Kubernetes 的本質(zhì)?DevOps技術(shù)棧0從容器到容器云,什么才是 Kubernetes 的本質(zhì)?k8s技術(shù)圈0容器云又拍云容器云是全球首家分布式容器云平臺(tái),它基于自研、 Docker 等技術(shù)構(gòu)建,提供分布式計(jì)算資源網(wǎng)絡(luò),節(jié)點(diǎn)遍布全國各地及海外,提供電信、聯(lián)通、移動(dòng)和多線網(wǎng)絡(luò),融合微服務(wù)、DevOps 理念,滿足精益開發(fā)、運(yùn)維一體化,大幅降低分布式計(jì)算資源構(gòu)建復(fù)雜度,大幅降低使用成本。Docker——容器與容器云本書從實(shí)踐者的角度,在講解Docker高級(jí)實(shí)踐技巧的同時(shí),深入到源代碼層次,為讀者梳理出DockerDocker——容器與容器云Docker——容器與容器云0Kubernetes容器之間的通信淺談開源Linux0BeyondContainer 容器云BeyondContainer 容器云0什么是Docker容器?架構(gòu)師技術(shù)聯(lián)盟0Kubernetes容器集群管理系統(tǒng)Kubernetes?(通常稱為 K8s) 是來自 Google 云平臺(tái)的開源容器集群管理系統(tǒng),用于點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào)