近日,由InfoQ主辦的Qcon全球軟件開(kāi)發(fā)大會(huì)在上海寶華萬(wàn)豪酒店舉辦,QCon內(nèi)容源于實(shí)踐并面向社區(qū),演講嘉賓依據(jù)熱點(diǎn)話題,面向5年以上工作經(jīng)驗(yàn)的技術(shù)團(tuán)隊(duì)負(fù)責(zé)人、架構(gòu)師、工程總監(jiān)、開(kāi)發(fā)人員分享技術(shù)創(chuàng)新和實(shí)踐。在本次大會(huì)中,網(wǎng)易云容器編排負(fù)責(zé)人婁超分享了網(wǎng)易云容器平臺(tái)Kubernetes的持續(xù)升級(jí)實(shí)踐經(jīng)驗(yàn)。
據(jù)婁超介紹,網(wǎng)易云容器服務(wù)的前身是蜂巢,上線于2015年,也是國(guó)內(nèi)第一個(gè)基于Kubernetes提供多租戶的微服務(wù)容器平臺(tái)。Kubernetes多用于私有云,并沒(méi)有租戶的概念,網(wǎng)易云在Kubernetes基礎(chǔ)上擴(kuò)展了多租戶的能力,與IaaS做了無(wú)縫融合,支持集群虛擬機(jī)、物理機(jī)和GPU混布的異構(gòu)計(jì)算;同時(shí)網(wǎng)易云提供的容器服務(wù)是無(wú)服務(wù)架構(gòu)的,用戶只需關(guān)心鏡像和對(duì)計(jì)算資源的需求情況,底層可自動(dòng)擴(kuò)展和銷(xiāo)毀資源。
目前,網(wǎng)易云容器服務(wù)已經(jīng)在線上持續(xù)運(yùn)行三年多,歷經(jīng)三個(gè)階段:初期,網(wǎng)易云容器服務(wù)是為開(kāi)發(fā)者打造的容器云平臺(tái),基于Kubernetes 1.0,支持多租戶,僅提供無(wú)狀態(tài)/有狀態(tài)兩種負(fù)載;發(fā)展期,網(wǎng)易云容器服務(wù)2.0基于Kubernetes 1.3/1.6,支持單用戶多Namespace,定制有狀態(tài)容器,做了全面的性能優(yōu)化和架構(gòu)重構(gòu);融合期,網(wǎng)易云容器服務(wù)3.0符合Kubernetes一致性認(rèn)證,可以同時(shí)支持K8s API和Serverless模式OpenAPI。婁超表示,Kubernetes自開(kāi)源以來(lái)一直有著活躍的社區(qū)和用戶,版本升級(jí)周期已經(jīng)穩(wěn)定在三個(gè)月,作為基于Kubernetes的容器服務(wù)應(yīng)該選擇在何時(shí)升級(jí),升到哪個(gè)版本都需要全面的考量。
升級(jí)面臨三大挑戰(zhàn)
升級(jí)是基于Kubernetes的云平臺(tái)和用戶必然會(huì)面臨的場(chǎng)景和挑戰(zhàn)。根據(jù)網(wǎng)易云的經(jīng)驗(yàn),婁超總結(jié)了三大挑戰(zhàn):首先,社區(qū)更新快,版本變化大,升級(jí)工具不夠成熟;其次,容器形態(tài)的不斷演進(jìn)促使網(wǎng)易云要持續(xù)發(fā)展才能跟上社區(qū)節(jié)奏;最后,平臺(tái)在升級(jí)的過(guò)程中要考慮用戶的使用模式和用戶業(yè)務(wù)的穩(wěn)定性。
如何升級(jí)?網(wǎng)易云總結(jié)四個(gè)經(jīng)驗(yàn)
那么,網(wǎng)易云容器集群是如何升級(jí)的?婁超首先例舉了GKE的升級(jí)模式,先升級(jí)Master,再升級(jí)Slave端,Master服務(wù)鏡像一鍵升級(jí)或自動(dòng)升級(jí),Nodes用戶手動(dòng)滾動(dòng)更新或配置自動(dòng)升級(jí),通過(guò)驅(qū)趕老Node用戶容器升級(jí)Nodes。為什么Google會(huì)采用這種對(duì)用戶并不太友好的升級(jí)方式呢?Ahmet是GKE的核心開(kāi)發(fā)人員,曾在twitter上總結(jié)過(guò)業(yè)務(wù)零停服的Kubernetes升級(jí)建議,包括充分利用Kubernetes多副本,健康探測(cè),信號(hào)處理,設(shè)置最長(zhǎng)等待時(shí)間等特性。實(shí)際上,需要平臺(tái)供應(yīng)商嚴(yán)格按照最佳實(shí)踐方式去用,才能保證業(yè)務(wù)的穩(wěn)定性。
回看網(wǎng)易云容器服務(wù)的Kubernetes的升級(jí),主要經(jīng)歷了三次升級(jí)過(guò)程。據(jù)婁超透露,網(wǎng)易云容器初期1.0線上用戶中,個(gè)人小用戶占了大多數(shù),有狀態(tài)單體容器占大部分,用法也比較隨意。在1.0升級(jí)到2.0的過(guò)程中,網(wǎng)易云主要要考慮了Kubernetes 1.3和1.0版本的差異,以及容器服務(wù)本身功能的變化。限于Kubernetes版本和Docker版本的兼容性并不好,這次升級(jí)主要做了三方面的探索:通過(guò)負(fù)載均衡幫用戶將流量平滑地遷移過(guò)去;保證K8s集群底層虛擬網(wǎng)絡(luò)互通,用戶可以通過(guò)自己的服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)服務(wù)實(shí)現(xiàn)遷移;對(duì)于將容器當(dāng)做虛擬機(jī)來(lái)用的用戶,通過(guò)docker commit替換本地鏡像,幫用戶升級(jí)Node。
隨著容器技術(shù)的普及,網(wǎng)易云容器服務(wù)升級(jí)到2.0后,用戶對(duì)容器的使用也逐步趨于規(guī)范。婁超分享了在這次升級(jí)中對(duì)業(yè)務(wù)影響最小的熱升級(jí)方案:為了做到對(duì)所有容器無(wú)感知的升級(jí),要做到不遷移Node,不重啟容器。據(jù)婁超介紹,為了達(dá)到這種Node In-Place升級(jí),網(wǎng)易云主要通過(guò)kubelet v1.3可以無(wú)縫接管v1.0老容器,實(shí)現(xiàn)了容器的不重啟,通過(guò)容器網(wǎng)絡(luò)方案兼容實(shí)現(xiàn)了網(wǎng)絡(luò)的不中斷。
在升級(jí)的過(guò)程中,還會(huì)遇到Master與Node不兼容的問(wèn)題。為了解決這個(gè)問(wèn)題,婁超給出的解決方案是,先新建一個(gè)新版本的Master,在升級(jí)Node的時(shí)候,同時(shí)把API的地址改到新版本中去,保證升級(jí)時(shí)所有版本都是兼容的。此外,對(duì)于K8s多租戶的集群,升級(jí)的風(fēng)險(xiǎn)是很大的,網(wǎng)易云采用了灰度升級(jí)的方式。
最后,婁超總結(jié)了網(wǎng)易云容器平臺(tái)在持續(xù)升級(jí)實(shí)踐中的經(jīng)驗(yàn)教訓(xùn)。首先,快速有效地對(duì)集群進(jìn)行在線升級(jí)的前提是要做好開(kāi)源選型,這是非常重要的基礎(chǔ),比如Kubernetes就是容器編排領(lǐng)域的最佳選擇;第二,自己造特性需要謹(jǐn)慎,最好不要改開(kāi)源系統(tǒng)本身的代碼,而要通過(guò)API去做功能的擴(kuò)展;第三,要考慮是開(kāi)源還是自研;第四,要保障版本的快速跟進(jìn)。只有不斷改造原生K8s并與網(wǎng)易云基礎(chǔ)設(shè)施結(jié)合,才能緊跟社區(qū),支撐客戶業(yè)務(wù)多樣化的需求。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長(zhǎng)
- 為什么年輕人不愛(ài)換手機(jī)了
- 柔宇科技未履行金額近億元被曝已6個(gè)月發(fā)不出工資
- 柔宇科技被曝已6個(gè)月發(fā)不出工資 公司回應(yīng)欠薪有補(bǔ)償方案
- 第六座“綠動(dòng)未來(lái)”環(huán)保公益圖書(shū)館落地貴州山區(qū)小學(xué)
- 窺見(jiàn)“新紀(jì)元”,2021元宇宙產(chǎn)業(yè)發(fā)展高峰論壇“廣州啟幕”
- 以人為本,景悅科技解讀智慧城市發(fā)展新理念
- 紐迪瑞科技/NDT賦能黑鯊4 Pro游戲手機(jī)打造全新一代屏幕壓感
- 清潔家電新老玩家市場(chǎng)定位清晰,攜手共進(jìn),核心技術(shù)決定未來(lái)
- 新思科技與芯耀輝在IP產(chǎn)品領(lǐng)域達(dá)成戰(zhàn)略合作伙伴關(guān)系
- 芯耀輝加速全球化部署,任命原Intel高管出任全球總裁
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。