原標(biāo)題:云原生漫游指南2 從CI&CD到計(jì)算存儲(chǔ)分離
之前在《云原生漫游指南(1)丨先從構(gòu)建一個(gè)容器起步》中,我們?cè)敿?xì)介紹了企業(yè)在云原生轉(zhuǎn)型路徑中必經(jīng)的前兩個(gè)站點(diǎn):容器化、鏡像&運(yùn)行時(shí),即將應(yīng)用開發(fā)的產(chǎn)出物構(gòu)建成容器鏡像,并存放和運(yùn)行鏡像。有人可能會(huì)問(wèn),這一過(guò)程中有什么提升效率的方式嗎? 答案是肯定的,本文就將從解決這個(gè)問(wèn)題開始,繼續(xù)介紹云原生路徑中接下來(lái)的幾個(gè)關(guān)鍵站點(diǎn)。
第三站 CI&CD:自動(dòng)化構(gòu)建與部署
容器化過(guò)程細(xì)粒度拆分了應(yīng)用的部署單元,因此開發(fā)者可以更加頻繁和便捷地對(duì)每個(gè)容器版本進(jìn)行變更以支持敏捷研發(fā)。
但如果每次變更都需要手工構(gòu)建鏡像并將新版本部署到運(yùn)行時(shí),顯然會(huì)大大影響效率。所以云原生中非常重要的一環(huán),就是實(shí)現(xiàn)自動(dòng)化的容器鏡像集成和部署,也就是我們常常聽到的CI&CD(Continuous Integration, Delivery & Deployment)。 實(shí)現(xiàn)容器CI&CD的工具很多,如業(yè)內(nèi)最流行的開源CI&CD工具Jenkins,就為容器構(gòu)建和部署提供了豐富的插件支持。
利用這些CI&CD工具,開發(fā)者不僅可以實(shí)現(xiàn)自動(dòng)化的鏡像構(gòu)建和部署,還能在這個(gè)過(guò)程中插入一些更為復(fù)雜的邏輯,以滿足不同場(chǎng)景的業(yè)務(wù)需求,其中最為常見的就是灰度發(fā)布。
灰度發(fā)布意味著每次部署新版本鏡像時(shí),承載業(yè)務(wù)的所有容器不會(huì)同時(shí)被更新到新版本,而是根據(jù)用戶設(shè)定的策略分批更新,同時(shí)在此期間業(yè)務(wù)流量會(huì)被平滑的逐漸切換到新的版本。在灰度發(fā)布的過(guò)程中,開發(fā)者可以隨時(shí)觀察新老版本之間的流量切換和健康狀況,一旦出現(xiàn)故障可以隨時(shí)中斷發(fā)布過(guò)程并將已經(jīng)更新的部分實(shí)例回滾。
在百度智能云上,用戶可以直接利用容器鏡像服務(wù)中的自動(dòng)構(gòu)建和部署功能實(shí)現(xiàn)簡(jiǎn)單的CI&CD流程,應(yīng)用于一些測(cè)試場(chǎng)景或者簡(jiǎn)單的業(yè)務(wù)中。如果需要編排更加復(fù)雜的CI&CD流水線,引入更多的權(quán)限管理和自動(dòng)化測(cè)試等能力,也可以選擇百度效率云所提供的完整CI&CD工具鏈。
第四站 容器編排:高效的管理、調(diào)度與調(diào)整
經(jīng)過(guò)前面的三個(gè)站點(diǎn),應(yīng)用已經(jīng)可以通過(guò)容器化的方式,持續(xù)上線發(fā)布到生產(chǎn)環(huán)境當(dāng)中。但是隨著應(yīng)用以及容器的數(shù)量逐漸增多,運(yùn)維人員也會(huì)面臨更多的問(wèn)題:
- 如何把容器合理調(diào)度到不同的計(jì)算資源上?
- 如何動(dòng)態(tài)調(diào)整容器的實(shí)例數(shù)量?
- 如何區(qū)別管理不同類型應(yīng)用的容器生命周期?
容器編排系統(tǒng)的目的就是幫助運(yùn)維人員解決這些問(wèn)題,而Kubernetes則是容器編排領(lǐng)域最為成功的項(xiàng)目。
通過(guò)定義一套標(biāo)準(zhǔn)易用的模型,Kubernetes將容器和容器相關(guān)的資源包裝成為多種面向不同場(chǎng)景的工作負(fù)載類型,如部署(deployment)、任務(wù)(Job)、守護(hù)進(jìn)程(daemonset)、有狀態(tài)任務(wù)(statefulset)等。
用戶只需要用Kubernetes的語(yǔ)法將待部署的業(yè)務(wù)描述為這些不同工作負(fù)載,Kubernetes將會(huì)根據(jù)計(jì)算資源的實(shí)際情況自動(dòng)完成容器的調(diào)度和生命周期管理,比如自動(dòng)維持部署的副本數(shù)在用戶指定的規(guī)模、將守護(hù)進(jìn)程部署到集群中所有節(jié)點(diǎn)中、保障有狀態(tài)任務(wù)中每個(gè)實(shí)例的ID不變等。 實(shí)施一個(gè)基于Kubernetes的容器編排系統(tǒng)并不復(fù)雜,社區(qū)中有多種工具可以幫助開發(fā)者快速創(chuàng)建一個(gè)Kubernetes集群,比如kubeadmin、kubeoperator等。但真正把Kubernetes投入生產(chǎn)中使用還有很多問(wèn)題需要考慮,這些問(wèn)題主要體現(xiàn)在3個(gè)方面:
1.Kubernetes與IaaS的適配問(wèn)題。不同的基礎(chǔ)架構(gòu)提供的計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)方案是不一樣的,在公有云上這種差異尤其顯著,比如公有云不同的授權(quán)機(jī)制、網(wǎng)絡(luò)和存儲(chǔ)實(shí)現(xiàn)方案等。Kubernetes為與IaaS層的適配提供了一個(gè)叫做cloud-controller-manager的組件,抽象出面向IaaS平臺(tái)的接口,而具體的實(shí)現(xiàn)交給各云廠商來(lái)做。
2.Kubernetes本身的維護(hù)成本。Kubernetes雖然為容器編排管理帶來(lái)了極大的便利,但是對(duì)Kubernetes本身的穩(wěn)定性維護(hù)會(huì)增加額外的成本。當(dāng)容器規(guī)模增大時(shí),需要對(duì)Kubernetes的核心組件有完善的監(jiān)控和容災(zāi)方案,才能真正投入到生產(chǎn)環(huán)境中。
3.開源組件的集成管理。Kubernetes作為容器編排生態(tài)的底座,在社區(qū)中發(fā)展出了大量面向Kubernetes的組件,進(jìn)而提供監(jiān)控、日志、網(wǎng)絡(luò)管理、持續(xù)集成等能力。那么如何在眾多開源組件中選型、如何管理大量開源組件的版本和適配問(wèn)題、如何讓不同開源組件提供統(tǒng)一的使用界面。這些問(wèn)題在生產(chǎn)環(huán)境中都需要考慮。 在百度智能云上,用戶可以選擇云容器引擎CCE產(chǎn)品,從而滿足Kubernetes集群托管的需求,在云上輕松創(chuàng)建、管理和運(yùn)維專屬的Kubernetes集群,能夠大大降低搭建容器基礎(chǔ)設(shè)施的成本,更快達(dá)成容器編排這一云原生關(guān)鍵路徑。
第五站 計(jì)算存儲(chǔ)分離:提升靈活性
我們將應(yīng)用容器交給Kubernetes進(jìn)行編排調(diào)度后,并不意味著這些容器就已經(jīng)可以開始在集群中靈活遷移了。雖然容器化讓應(yīng)用可以跨節(jié)點(diǎn)快速啟停,但是應(yīng)用所依賴的數(shù)據(jù)如果依然保存在本地磁盤中,那么容器的靈活性就會(huì)大大受到限制。
接下來(lái)我們需要做的就是拆分系統(tǒng)中的計(jì)算與存儲(chǔ),并且用分布式的遠(yuǎn)程存儲(chǔ)方案來(lái)替代本地存儲(chǔ),從而讓容器的調(diào)度不再受限于存儲(chǔ)資源所在的位置。
云磁盤是一種最直觀的遠(yuǎn)程存儲(chǔ)方式,它提供了可以通過(guò)網(wǎng)絡(luò)路徑掛載到容器宿主機(jī)上的塊存儲(chǔ)設(shè)備。云磁盤的優(yōu)勢(shì)在于提供了與本地磁盤幾乎一致的使用體驗(yàn),因此可以作為最低成本的本地存儲(chǔ)遷移方案。但是云磁盤的使用場(chǎng)景依然受限于它所掛載的宿主機(jī),因此在頻繁遷移的場(chǎng)景或者分布式讀寫的場(chǎng)景中就不那么適用了。
NFS(網(wǎng)絡(luò)文件系統(tǒng))則是針對(duì)這兩種場(chǎng)景的解決方案之一,它可以為多個(gè)宿主機(jī)提供共享的文件系統(tǒng),支持分布式系統(tǒng)同時(shí)進(jìn)行讀寫。不過(guò)相比之下NFS犧牲了一定的IO性能,因此并不適用于對(duì)性能要求較高的業(yè)務(wù)。
對(duì)象存儲(chǔ)是另一種存儲(chǔ)方式,它在支持分布式遠(yuǎn)程訪問(wèn)的同時(shí)提供了更強(qiáng)的性能。對(duì)象存儲(chǔ)中不再有文件系統(tǒng)中的層級(jí)結(jié)構(gòu),每個(gè)存儲(chǔ)對(duì)象都存在于存儲(chǔ)池的扁平地址空間中,并且都具有各自的唯一標(biāo)識(shí)符,應(yīng)用程序需要訪問(wèn)對(duì)象存儲(chǔ)系統(tǒng)提供的接口,并通過(guò)唯一標(biāo)識(shí)符對(duì)存儲(chǔ)對(duì)象進(jìn)行讀寫等操作。
相比起云磁盤或NFS,對(duì)象存儲(chǔ)的使用通常會(huì)對(duì)業(yè)務(wù)代碼的開發(fā)有所侵入,但是對(duì)象存儲(chǔ)在分布式、高并發(fā)的場(chǎng)景下,卻有其不可替代的優(yōu)勢(shì)。 為了滿足對(duì)這些不同類型的存儲(chǔ)靈活使用,Kubernetes提供了一種叫做PV(Persistent Volume)的對(duì)象用來(lái)對(duì)存儲(chǔ)資源進(jìn)行統(tǒng)一管理。
云服務(wù)商通過(guò)向Kubernetes提供插件的方式來(lái)支持各自對(duì)三種不同存儲(chǔ)類型的不同實(shí)現(xiàn),從而讓開發(fā)者通過(guò)統(tǒng)一的方式選擇所需存儲(chǔ)類型并掛載到容器。
百度智能云容器引擎CCE支持用戶通過(guò)PV的方式使用云磁盤CDS、云文件系統(tǒng)CFS和云對(duì)象存儲(chǔ)BOS三種存儲(chǔ)類型,從而滿足不同場(chǎng)景下的業(yè)務(wù)需求。 下一期,我們將繼續(xù)介紹云原生漫游之旅的關(guān)鍵站點(diǎn),敬請(qǐng)期待。
- 世間將再無(wú)松下電視:松下官宣解散家電子公司并徹底放棄電視機(jī)業(yè)務(wù)
- 雅迪集團(tuán)與南都電源簽署協(xié)議:攜手共繪固態(tài)電池未來(lái)藍(lán)圖
- 美媒聚焦比亞迪“副業(yè)”:電子代工助力蘋果,下個(gè)大計(jì)劃瞄準(zhǔn)AI機(jī)器人
- 微信零錢通新政策:銀行卡轉(zhuǎn)入資金提現(xiàn)免手續(xù)費(fèi)引熱議
- 消息稱塔塔集團(tuán)將收購(gòu)和碩印度iPhone代工廠60%股份 并接管日常運(yùn)營(yíng)
- 蘋果揭秘自研芯片成功之道:領(lǐng)先技術(shù)與深度整合是關(guān)鍵
- 英偉達(dá)新一代Blackwell GPU面臨過(guò)熱挑戰(zhàn),交付延期引發(fā)市場(chǎng)關(guān)注
- 馬斯克能否成為 AI 部部長(zhǎng)?硅谷與白宮的聯(lián)系日益緊密
- 余承東:Mate70將在26號(hào)發(fā)布,意外泄露引發(fā)關(guān)注
- 無(wú)人機(jī)“黑科技”亮相航展:全球首臺(tái)低空重力測(cè)量系統(tǒng)引關(guān)注
免責(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)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。