作者:vivo 互聯網容器團隊- Pan Liangbiao
本文根據潘良彪老師在“2022 vivo開發者大會"現場演講內容整理而成,公眾號回復【2022 VDC】獲取互聯網技術分會場議題相關資料,
2018年起,vivo以容器作為基礎底座,打造了一站式云原生機器學習平臺,向上支撐了演算法中臺,為演算法工程師提供資料管理、模型訓練、模型管理、模型部署等能力,為廣告、推薦和搜索等業務賦能,成功為演算法實作了降本、提效,讓云原生和容器價值初露鋒芒,基于機器學習平臺的試點成果,經過演算法場景的試點實踐和價值分析,對內部戰略做了升級,確定基于云原生理念去構建行業一流的容器生態,實作規模化的降本提效目標,
本文會詳細介紹vivo在容器集群高可用建設中的具體實踐,包括在容器集群高可用建設、容器集群自動化運維、容器平臺架構升級、容器平臺能力增強、容器生態打通等層面的打磨和建設,目前,vivo容器產品能力矩陣逐漸趨于完善,并將圍繞全面容器化、擁抱云原生和在離線混部三個方向繼續發力,
云原生和容器,是當下比較火熱的話題,其中 Kubernetes更是成為容器編排領域的事實標準,
國內外各企業在內部落地云原生和容器的程序中,基于自己的業務場景和發展階段,會遇到各種問題和挑戰,本文是vivo在云原生容器領域的探索和落地實踐,希望能對讀者有一些借鑒和幫助,
一、容器技術和云原生理念
首先是容器技術和云原生理念的介紹,
1.1 容器技術簡介
容器技術不是一個新技術,從1979年unix系統的chroot誕生到現在,歷經40多年的發展,共經過了四個階段,分別是:技術萌芽期、技術迸發期、商用探索期和商用拓展期,
每個階段,解決了不同的技術問題,分別是:環境隔離、軟體分發和編排、商用服務形態、規模化和場景拓展,
相比于虛擬機,容器技術少了一層虛擬作業系統的損耗,因此它比虛擬機具有更好的性能表現,另外容器在系統資源、啟動時間、集群規模、高可用策略等方面,也有非常明顯的優勢,
2020年CNCF中國云原生調查報告顯示,接受調查的中國企業,有68%已經在生產環境使用容器技術,
從行業發展看,不管是云廠商還是各大科技公司,都在基于容器技術構建自己的新一代基礎架構,推動企業數字創新,容器技術已經得到廣泛的認可和普及,
1.2 云原生理念介紹
容器技術催生了云原生思潮,云原生生態推動了容器技術的發展,那么云原生的準確定義和含義是什么呢?
云原生其實沒有標準定義,如果非要給他一個定義,行業有兩種觀點:
-
一個定義來自Pivotal 這家公司,它是云原生應用的提出者,是云原生的先驅者、探路者,Pivotal最新的官網對云原生的介紹有四個要點,分別是:DevOps、持續交付、微服務和容器,
-
另外一個定義來自CNCF,CNCF建立于2015年,它是一個開源組織,其存在的目的,是支持開源社區開發關鍵的云原生組件,包括 Kubernetes、Prometheus監控等,
它把云原生分為3種核心技術和2個核心理念:
-
3種核心技術:分別是容器、微服務、服務網格,
-
2個核心理念:分別指不可變基礎設施和宣告式API,
但是,不管是那一種定義,容器都是其基礎,是云原生落地的核心技術手段,
1.3 云原生價值分析
任何技術和理念,都必須有實際的業務價值,從效率、成本、質量三個維度,來分析云原生和容器的技術價值,可總結如下:
-
效率:可實作持續交付部署快、鏡像封裝可移植、彈性計算秒擴容,
-
成本:可實作按需分配不浪費、統一調度高填充、混合部署少碎片,
-
質量:可實作運行狀態可觀測、故障發生可自愈、集群管理可運維,
二、vivo 容器技術探索與實踐
新技術的引入帶來新的價值,也必然會引入新的問題,接下來介紹vivo在容器技術上的探索和實踐,
2.1 試點探索
在vivo的演算法場景中,機器學習平臺負責演算法模型迭代,是互聯網演算法業務中核心的一環,早期的平臺基于傳統的架構,在效率、成本、性能和體驗上均有一定的不足,無法滿足演算法業務快速增長的訴求,基于此,我們首先在演算法場景進行容器的試點探索,從2018年開始,我們以容器作為基礎底座,打造了vivo的一站式云原生機器學習平臺,向上支撐了公司的演算法中臺,為演算法工程師提供資料管理、模型訓練、模型管理、模型部署等能力,為廣告、推薦和搜索等業務賦能,
vivo的云原生機器學習平臺具備如下5大優勢:
-
場景全:業務端到端,覆寫推薦、廣告、搜索多場景,
-
體驗好:排隊時間短,用戶體驗優,任務P99排隊時長小于45分鐘,
-
成本低:調度能力好,資源利用率高,CPU利用率均值大于45%,
-
效率高:網路規模大,訓練跑得快,訓練速度8.3億樣本每小時,
-
結果優:演算法迭代穩定,訓練成功率高,訓練成功率大于95%,
vivo云原生機器學習平臺,成功為演算法實作了降本、提效,讓云原生和容器價值初露鋒芒,
2.2 價值挖掘
基于前面機器學習平臺的試點成果,我們深入分析和挖掘容器和云原生的價值,結合vivo的情況,我們發現容器和云原生是企業大規模降本和提效的最佳方案,
1)在降本方面
當前我們內部服務器資源的利用率較低,以CPU利用率為例,當前vivo服務器整體利用率均值在25%左右,相比行業一流水平的40%~50%,還有不少的提升空間,
容器在資源隔離、統一調度和在離線混部等方面的優勢,均是提升資源ROI的有效技術手段,
2)在提效方面
當前我們在中間件版本升級、機器遷移、測驗環境管理、突發流量應對和全球化部署的環境一致性等方面均有業務痛點,
容器的快速交付、彈性自運維、微服務、服務網格等云原生技術和架構,則是提效的有力措施,
2.3 戰略升級
經過演算法場景的試點實踐和價值分析,我們對內部戰略做了升級, 確定基于云原生理念去構建行業一流的容器生態,實作規模化的降本提效目標,
為了更好匹配戰略落地,擁抱云原生,我們還對內部技術架構重新規劃和升級,新增引入統一流量接入平臺、容器運維管理平臺、統一名字服務、容器監控等平臺和能力,支撐容器生態在公司內部的全面建設和推廣,
2.4 面臨挑戰
2.4.1 集群挑戰
要提供大規模的生產可用的容器服務,容器集群的可用性首先會面臨諸多挑戰,下面介紹vivo容器化,在生產集群建設程序中遇到的4個比較大的挑戰,
-
集群規模快速增長:vivo集群服務器規模上萬個宿主機節點,管理的集群數十個,單集群規模2千+,實體數10萬+,對集群性能和機器管理挑戰極大,
-
集群運維、運營和標準化:由于早期集群管理不規范,黑屏化操作和人為誤操作等問題層出不窮,集群運維人員每天因為各種救火忙得焦頭爛額,
-
集群容器監控架構和可觀測性:隨著集群規模快速增長,容器的監控組件面臨極大壓力,對容器監控的采集、存盤和展示,提出更高的要求,
-
線上K8s版本升級迭代:面對Kubernetes版本的快速迭代,需要實作給飛行的飛機換引擎,
針對挑戰,我們的應對方案分別是:高可用、可觀測、標準化和自動化,其中容器監控和k8s版本無損升級的挑戰,vivo公眾號有詳細技術方案的介紹,本文側重介紹集群高可用和運維自動化兩部分,
2.4.2 平臺挑戰
除了集群穩定性的挑戰,平臺也將面臨各種挑戰,由于容器平臺和周邊生態能力不完善,對業務存在較高的適配和遷移成本,總結起來我們遇到的挑戰主要有4點:
-
容器IP的變化:k8s早期把業務都設計成無狀態的,其原生實作是每次發布容器的IP都會變化,這對部分依賴固定IP的傳統業務不太友好,業務改造成本較高,
-
周邊生態的適配和兼容:包括發布系統、中間件微服務平臺、內部開發框架和流量接入層等
-
用戶使用習慣:vivo有比較成熟的發布平臺,用戶習慣按機房發布,習慣資源分配和發布分開操作,
-
價值輸出:運維研發效率的提升不好量化,容器成本優勢短期不好衡量,
上面這些挑戰,推動我們要進行容器周邊生態打通,同時通過增強容器平臺產品能力,來適配各種業務場景,降低用戶的遷移成本,
2.5 最佳實踐
2.5.1 容器集群高可用建設
接下來,介紹vivo在容器集群高可用建設中的最佳實踐,我們是從故障預防、故障發現和故障恢復,3個維度來構建容器集群可用性保障體系的,
1、在故障預防上,我們分別從流程工具、容災能力和基礎架構3個方面來進行建設:
-
流程工具:主要包含故障預案和故障演練,以及通過建設運維管理平臺,來實作運維標準化、白屏化和自動化,
-
容災能力:主要是構建業務跨故障域容災能力,保障集群故障時,服務和業務流量能跨集群調度和快速一鍵遷移等,
-
基礎架構:主要是通過屏蔽用戶對底層集群的感知,一個機房多套集群,一個業務同時部署在多個集群上,避免單集群故障對業務造成影響,
2、在故障發現上,我們主要是通過,自建的監控大盤、日常集群巡檢、核心組件監控、集群外撥測等措施,對故障及時發現和處理,降低對業務影響,
3、在故障恢復上,主要是基于前面的故障預案,快速恢復,及時止損,并做好故障的復盤,不斷改進我們的故障預防和發現機制,沉淀寶貴經驗,
另外,集群的可觀測性是可用性保障的一個重要依據,我們通過建設自己的SLO面板,對集群狀態實時地進行監控,只有對運營狀況了如指掌,才能做到穩如泰山,沉著應對一切變化,
2.5.2 容器集群自動化運維
除了容器集群自身穩定性建設,在運維自動化方面,我們建設了容器多集群管理平臺,實作集群配置標準化,核心運維場景白屏化,來提升運維效率,
我們的容器集群管理平臺,是以云原生的方式來管理云原生,簡單來說,就是基于k8s的operator機制,實作k8s on k8s,
當前,我們的平臺已經能夠實作多集群的統一納管,集群部署也是自動化、標準化的,還實作了底層IAAS層打通,集群節點能全流程化、可視化的一鍵擴縮容,而集群巡檢功能,可以幫助我們及時發現集群的問題和隱患,
通過平臺進行日常運維和操作,不僅能提升效率,也具備審計能力,有操作和變更日志可追溯,便于問題定位,
2.5.3 容器平臺架構升級
為適應業務容器化在內部的快速普及和推廣,我們升級了vivo的容器平臺架構,
新的架構分為4層,容器+k8s則作為基礎的統一底座,向下對接公司IAAS層的基礎設施,向上提供容器產品和平臺能力,并通過開放API供上層呼叫和定制自己的上層邏輯,
API之上是容器支持的各種服務型別,包括在線服務、中間件服務、大資料計算、演算法訓練、實時計算等,最上面是為vivo互聯網各個業務進行賦能,
基于這套容器平臺架構,業務能實作資源隔離部署、快速交付和按需使用,同時也具備更好的彈性伸縮能力,對平臺,我們可以統一資源的調度,實作資源的分時復用、在離線混部等,來提升資源的利用率,
2.5.4 容器平臺能力增強
vivo內部容器化場景比較多樣化,為了讓業務能夠安心、低成本的接入和使用容器的能力,在推廣程序中,我們基于開源+自研做了容器的適配和原生能力的增強,
下面對6個產品能力增強進行簡單的分享:
-
云原生作業負載增強:基于開源的openkruise,對原生deployment、statefulset等workload進行了增強,實作諸如原地升級、發布暫停、流式和配置優先級等擴展能力,
-
服務無損發布增強:基于內部框架和平臺自主研發,實作HTTP、RPC等協議框架的流量無損發布,
-
容器鏡像安全:基于開源的Harbor定制開發,實作容器鏡像安全掃描和卡控能力,
-
容器鏡像加速:基于開源dragonfly2定制擴展,讓大規模集群鏡像的分發性能提升80%以上,
-
IP固定能力增強:基于有狀態服務和CNI進行自研,支撐黑白名單、有狀態服務場景訴求,降低業務接入改造成本,
-
多集群管理能力增強:基于開源Karmada進行功能優化和擴展,提升業務容災能力,支撐單集群橫向擴展能力,
當然,在充分享受開源紅利的同時,我們也持續地參與開源協同,回饋社區,在使用和自研的程序中,我們也把自己生產實踐程序中發現的問題和積累的經驗提交到社區,例如Dragonfly2、Karmada等,
2.5.5 容器CICD一體化
除了平臺能力的增強,容器平臺作為一個PaaS平臺,需要和周邊的生態打通,才能讓業務更好的遷移和使用,其中最重要的就是發布系統的打通,也就是CICD平臺,
幾乎每個科技公司都會有自己的CICD,它是一個DevOps自動化的工具,可進行業務構建和編排部署的流水線,
vivo的CICD平臺底層架構是基于JenKins+Spinnaker實作的,整個容器構建和部署流程如下:
-
首先,用戶在CICD平臺上創建好發布程序的流水線配置并保存,
-
其次,CI環節可實作和內部GitLab對接,拉取代碼,基于jenkins進行代碼編譯和鏡像構建,構建好的鏡像經過安全掃描后,推送到開發環境的鏡像倉庫,
-
最后,在CD環節,CICD平臺會呼叫容器平臺提供的API,進行開發、測驗、預發和生產環境的部署操作,
2.5.6 統一流量接入
接下來,介紹容器生態里,最重要的業務流量接入層的打通,
早期,vivo內部是基于Nginx,來實作的南北流量和東西流量的轉發,在虛擬機和物理機場景能比較好的支撐,隨著容器在內部全面的推廣,傳統的Nginx架構已不能適配,
主要體現在,容器場景業務實體數量,相比原來虛擬機和物理機成倍數增長,容器發布程序IP的頻發變化和狀態同步,都會對Nginx集群造成非常大的壓力,在業務請求量非常大的情況下,接入層的組態檔重繪和加載,會造成業務的抖動,這是我們不能接受的,
基于這個背景,我們基于APISIX構建了云原生流量接入層,來適應全面容器化的需求,經過一年多的建設,當前我們的統一流量接入平臺已經能夠很好的支撐容器化的接入,同時具備更好的擴展能力,
2.6 實踐成果
2.6.1 產品能力矩陣完善
經過多年的打磨和建設,vivo容器產品能力矩陣趨于完善,整個產品能力矩陣,分為4層:
-
基礎服務層:包含3類服務,鏡像管理、集群運維和集群監控,
-
能力層:包含6個核心能力,分別是集群調度、CAAS-API、容器配置、容器業務監控告警、容器日志和平臺擴展能力,
-
平臺層:包含2大平臺能力,分別是CI和CD,
-
業務層:當前覆寫了vivo互聯網所有業務場景,
2.6.2 業務接入成果凸顯
接下來,會具體介紹下vivo容器推廣情況,
目前容器在vivo內部主要覆寫4大場景,分別是:互聯網在線業務、演算法在線、大資料計算和AI演算法訓練等,接下來,會從接入規模和價值來簡單介紹,
-
互聯網在線服務:內部各個業務線均有大量服務運行在容器上,例如vivo商城、賬號、瀏覽器、快應用、天氣等,已經接入服務600+,
-
演算法在線服務:當前接入500+服務,3000+服務器,涉及推廣搜的各個業務線,
-
大資料計算服務:包含離線計算如Spark,實時計算如Flink、Olap等場景,當前接入集群20+,
-
AI演算法訓練:主要是提供GPU、CPU異構計算,業務場景如Tensorflow、mpi等場景,算力十幾萬核,以及若干GPU卡,
業務容器化后,給業務在降本提效上帶來的效果非常明顯,包括但不限于擴縮容效率、彈性伸縮能力、業務自愈能力、資源成本等方面,
2.7 實踐總結
基于我們的探索和實踐,可總結為技術價值、推廣策略、平臺建設和云原生突破4個維度的思考,
-
找價值:關注新技術,但不執著于技術本身,必須結合業務痛點和價值,
-
定策略:自下而上小范圍試點探索,產生實際的業務價值,影響自上而下的戰略調整,
-
建平臺:當已經有比較完善的平臺和能力時,要找到容器的切入點,進行融合共建,切忌推到重來;對于需要從0到1建設的新能力,需要果斷的范訓創新,
-
求突破:在業務容器化程序中,為了快速容器化,我們做了許多的兼容和適配,為了更好的降本提效,未來,我們希望引導用戶,實作從使用云原生,到用好云原生的突破,
總的來說,技術服務于業務,企業應基于自身現狀,尋找合適的解決方案,并為業務創造價值,
三、vivo對云原生的未來展望
3.1 vivo基礎架構發展
從過去看未來發展,回顧過去10年歷程,vivo基礎架構的發展經歷了3個階段:
-
階段一:傳統研發運維階段,從2011到2018年,從早期的do分離研發模式,到基于openstack+kvm的虛擬化方案落地,
-
階段二:應用架構互聯網化階段,從2018到2020年,容器化開始在vivo內部興起,
-
階段三:云原生基礎架構演進階段,從2021年到現在,云原生和容器將會在vivo內部有更多場景的應用和推廣,如在離線混部等,
3.2 vivo云原生未來展望
回歸事物本源思考,做正確的事,并把事情做正確,不盲從,有定力,基于價值,客觀看待新技術發展,大膽假設、小心驗證、實踐出真知,
vivo云原生的未來,將會朝著3個方向發展,分別是全面容器化、擁抱云原生和在離線混部,
-
我們的愿景是:一次開發到處運行,通過自動運維實作極致效率和成本最優!
-
對開發人員:我們希望大家成為那只遨游海上的藍色鯨魚,馱著我們的業務應用,一次構建到處分發,靈活調度和運維,
-
對管理者:我們希望追求效率的同時,能夠實作成本最優,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/540287.html
標籤:其他
上一篇:二叉樹的最大/最小深度
