《謝仲天-TencentOS Server云原生技術實踐v2-p.pdf》由會員分享,可在線閱讀,更多相關《謝仲天-TencentOS Server云原生技術實踐v2-p.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、TencentOS Server云原生技術實踐2022.7.15騰訊云OS團隊1.騰訊OS技術積累2.TencentOS云原生網絡實踐3.TencentOS RUE(如意)4.TencentOS 悟凈5.其他云原生特性6.下一代云原生操作系統(全棧國產化)目錄騰訊OS技術積累0112年磨一劍2010年開始自主研發代替外購SUSE2011年發布第一個版本TS1精簡內核穩定性/性能提升新硬件支持新技術引進功能定制持續運營打磨2019年發布TS3輸出到公有云客戶:80%覆蓋率對外開源2021年規模1000萬2016年發布TS2自研覆蓋99%支撐微信、QQ、游戲等核心業務2020年OpenCloudO
2、S社區成立打造生態、引領核心技術實現開源和商業的閉環自主研發時代自主研發運營、持續打磨創新研發時代向外生長、社區生態、技術引領TencentOS Server簡介:十年積累,千萬節點2010年開始研發,10+年積累1000萬規模超千萬,行業領先99.999%可用性5個9,滿足企業級要求TencentOS Server自2010年研發,歷經10+年技術積累,自研內核核心技術,系統全面優化,支持國產主流硬件平臺;商用節點數達1000萬級,支撐12大行業客戶核心系統,經歷海量場景考驗私有化場景拓展TS3,5.4內核打磨成熟2022年Tencent Server云原生能力總覽云原生內核(基于5.4)云
3、原生服務能力行業領先Ebpf/Cilium全面支持性能、靈活性、安全性Cillium是新一代的K8s網絡插件,依賴內核ebpf。內核關鍵特性ebpf全量支持,全面支持cilium新特性容器可視化能力增強(云原生SLI)可維護性CPU彈性調度降本增效容器級別的專業監控指標;黑匣子常態化運行,捕捉隨機異常抖動業界難題;異常主動上報,提供毫秒級響應內存分級卸載(悟凈)降本增效統一資源隔離(RUE)穩定性/性能/降本增效CPU隔離、內存隔離、IO隔離、網絡隔離解決不同優先級容器之前的隔離性問題,保障高優先級容器的服務質量高可用云原生網絡可靠性容器資源視圖隔離可用性容器化全局資源,解決富容器場景下的業務
4、可用性問題MPTCP(mutipath tcp)鏈路故障failover-多路徑TCP&交換機ECMP算法解決突發流量導致資源浪費問題,降低容器的CPU資源申請,降低成本通過對業務壓力自適應畫像,對內存做動態的冷熱分級回收利用,在保證業務服務質量的情況下,降低整機的內存消耗qGPU(GPU隔離和共享)降本增效(GPU)通過OS層的黑科技,分時復用GPU資源(GPU和顯存),提升GPU資源利用率容器網絡跟蹤系統可維護性復雜云原生網絡架構下,網絡包的全生命周期跟蹤、診斷工具云原生網絡實踐02Cillium支持/Ebpf支持網絡包全鏈路跟蹤和診斷工具集安全容器網絡和優化高穩網絡6Cilium 重要f
5、eature支持,重要落地項目tc-bpf 功能集支持EBPF方案典型產品,客戶案例cilium v0.11及之前cilium v1.8-XDP Load Balancing-socket based load balance-sesson affinity某游戲客戶(XDP 用戶態協議棧)cilium v1.5-Service Mesh socket map/redirect 功能集支持騰訊云TCM(服務網格)-socket level EBPF 功能集支持-XDP 功能集支持-namespace cookies功能支持某教育客戶(EKS 基于ipvlan/tc-bpf端口復用)cilium
6、 v1.9-iptables by pass-neigh redirection 功能集支持騰訊云TKE(cilium整體解決方案,服務于多個重點客戶)某游戲客戶(XDP 網關)7Cillium支持:代碼分析一、ebpf移植整體情況:移植的補丁數量約350個,移植的特性(功能)數量約20個二、與5.10特性對比條目TencentOS serverupstream kernel 5.10cilium相關缺失bpf 類型30300bpf map類型28280bpf helpers 函數1491550https:/docs.cilium.io/en/stable/operations/system_
7、requirements/三、cillium支持特性名稱描述CO-RE機制該特性可以使得eBPF程序經過一次編譯后,可以運行在所有支持CO-RE模式的內核中,無需重復編譯eBPF字節碼。TRACING類型TRACING類型的eBPF用于內核函數、ftrace的跟蹤,與KPROBE和TRACEPOINT類型的eBPF類似,但功能更為強大、效率更高。同時,其支持直接內存訪問,可以在函數退出時獲取到函數的入參、能夠修改某類被trace函數的返回值等。bpf-trampoline機制用于支持TRACING類型的eBPF程序attach到其他的eBPF程序上STRUCT_OPS類型新增STRUCT_OP
8、S類型的eBPF程序,可以實現替換內核中的一些函數。該特性基于該類型的eBPF實現了tcp擁塞算法的eBPF支持,可以使用eBPF程序來實現tcp擁塞算法。EXT類型動態eBPF程序擴展,可以用現有的eBPF動態替換原有的eBPF程序中的某個函數。optimize-bpf_tail_call機制使得單個eBPF程序可以bpf_tail_call多個eBPF程序(之前只能單次調用)bpf-dispatcher優化某些eBPF程序(如XDP程序)的執行速度,用于將間接調用(如bpf_prog_run_xdp)轉換為直接調用sock_map TCP listen and UDP support增加套
9、接口類型的MAP對TCP處于listen狀態的套接口和UDP套接口提供支持bpf_modify_ret為TRACING類型的eBPF新增BPF_MODIFY_RETURN的attach類型,可以通過eBPF程序終止原來的被插樁的函數的執行,并修改其返回值。該特性在LSM中得到了使用。bpf-lsm類型LSM模塊提供的對eBPF的支持bpf-link機制bpf_link抽象的實現。該特性將attach進行了抽象,在eBPF和被attach的實例之間抽象了一層link,使得attach動作變得統一,且TRACING類型的eBPF也可以被pin了(之前基于kporbe的eBPF在用戶態程序退出后,會
10、被直接detach,然后釋放)bpf-netns類型支持將eBPF程序attach到網絡命名空間上bpf_sk_assign函數新增helper函數bpf_sk_assign,用于在收包的時候直接指定報文的收包套接口SK_LOOKUP類型實現SK_LOOKUP類型eBPF,該程序會在套接口查找的時候被調用,從而直接影響報文被投遞到的套接口bpf-iterator機制迭代器類型的eBPF程序類型支持。該特性提供的是一個機制,可以將eBPF程序作為一個文件(如pin文件)暴露給用戶,用戶在讀取文件的時候觸發eBPF程序遍歷某種數據。根據實現的不同,能做到的功能也不同。比如已經實現了的套接口迭代器、
11、進程迭代器、map迭代器等。bpf:Support access to bpf map fields機制可以在eBPF程序里訪問map的元素屬性,包括map長度等resolve_btfids機制該特性提供了編譯時BTF ID解析的功能。在以往,內核中想要獲取到某個結構體對應的BTF的ID,需要主動調用函數接口從BTF數據中進行符號查找,效率比較低。該特性在內核編譯期間就能找到對應的BTF ID,并將其填充到對應的全局變量中(變量處于特定的數據段中)bpf_local_storage(MAP)從bpf_sk_storage類型的MAP進行抽象,創建了通用的local_storage機制,可用于將
12、數據存儲到特定的實例上。同時,實現了BPF_MAP_TYPE_INODE_STORAGE類型的MAP,可以將數據存儲到特定的inode上,即所謂的本地存儲。bpf-ring-buffer(MAP)ring buffer類型的eBPF map的實現,用于取代之前的PERF_EVENT類型的MAP??捎糜谟脩魬B和eBPF程序之間的數據傳輸,且支持更復雜的操作。bpf_for_each_map_elem函數通過傳遞給helper函數bpf_for_each_map_elem一個回調函數,可以遍歷map 中的數據,每個數據都會傳遞給回調函數。bpf_timereBPF程序中使用timer定時器官方列舉
13、的features和內核選項,在Tk4(5.4)中都支持nettrace 網絡包全生命周期跟蹤、網絡診斷和監控工具集nettrace:基于eBPF實現的用于云原生場景的網絡定位、診斷和監控工具:報文生命周期跟蹤,快速定位問題主動故障診斷,一鍵解決網絡故障常態化網絡異常監控,實時發現網絡問題集群報文染色,解決容器集群范圍網絡包跟蹤難題新增丟包原因Feature,在Kernel社區提交近100個patch,上了lwn新聞云原生場景下,網絡環境部署越來越復雜,報文在節點上的處理路徑也越來越長。當發生網絡故障時,傳統的網絡定位工具(tcpdump、dropwatch等)存在一定的短板,無法深入內核進行
14、分析,使得問題定位困難、周期長。Better visibility into packet-dropping decisionshttps:/ p tcp監控結果:監控系統中所有的TCP丟包事件及其原因。Nettrace-監控模式(常態化部署/系統級監控)Nettrace-診斷模式(場景化專業分析)適用場景:出現網絡故障時,啟動命令跟蹤特定流(報文),進行診斷分析現象:節點ping不通診斷命令:nettrace p icmp-saddr 192.168.122.8 intel診斷結果:iptables在filter表INPUT鏈中的防火墻規則導致普通用戶、專家都適用EKS(安全容器)網絡方案E
15、KS:騰訊Severless安全容器方案,虛擬化輕量隔離網絡方案:主/從IP模式,控制面和數據面分離節點使用從(slave)IP,POD使用主(master)IP。對外通信時,均使用主IP來進行,POD對整個過程不感知。eBPF程序:1.基于TC在對外的網口上進行報文轉發,轉發控制面和數據面數據,通過端口隔離2.基于套接口監控節點與POD上的連接,并在系統調用階段進行端口沖突檢查和反饋內核:新增兩種eBPF類型,用于跟蹤套接口狀態變化基于eBPF的DNS緩存問題:節點需要獨立的dns pod,開銷大,性能差Pod級別dns緩存缺失,導致需要大量dns查找,性能差,上游dns服務壓力大相關問題難
16、查,運維成本高基于eBPF,在節點/POD上實現DNS緩存機制:高性能:相比于用戶程序緩存的方式,查找性能提高一倍低開銷:節點無需額外部署dns pod或者systemd-resolved,節省資源免運維:節點級別緩存,對用戶透明13高穩網絡:基于多路徑TCP的網絡可靠性增強hostbond1eth0eth1hostbond1eth0eth1LA0LA1LA0LA1LC0LC1LC2LC3LC4LC5LC6LC7CUF0CUF1CUF2CUF3CUF0CUF1CUF2CUF3CUF0CUF1CUF2CUF3CUF0CUF1CUF2CUF3接入層交換機核心層交換機說明:某一個LC或者LA出現假死
17、;即:LACP協議探測上下行交換機正常,但是實際交換機已經不轉發流量,會導致故障交換機成為“網絡黑洞”,影響所有流經對應交換機的流量通信。業務訴求:基于TC在對外的網口上進行報文轉發1)減少或避免業務對網絡中單點交換機故障的感知度2)盡量不對現有業務代碼做改動問題:單點交換機故障引起服務故障-交換機假死影響時長次數百分比20s以內8078.6%20s-60s1616.5%60s-180s22%180s以上32.9案例統計:14方案:MPTCP(mutipath tcp)鏈路故障failover-多路徑TCP&交換機ECMP算法原理:-MPTCP保持了和傳統TCP相同的語義(socket系統調用
18、擴展了prot參數:IPPROT_MPTCP)-之間鏈接會被kernel擴展為,多條鏈接-交換機用ECMP協議根據5元組選擇轉發出向端口,預期將不同tcp子流從不同的端口轉發出去,從而被轉發到不同的下行交換機mptcp socket(sip1,sport1)tcp socket0(sip1,sport1)tcp socketN(sipN,sportN)mptcp socket(dip1,dport1)tcp socket0(dip1,dport1)tcp socketN(dip1,dport1)client(sip1,sport1)server圖(1):user/kernel space so
19、ck視圖clientLALCLCLAServer圖(2):MPTCP+ECMP鏈路failoverECMP增強:(除backport MPTCP外)1、client不支持單ip多port創建子流(支持多ip方式來創建子流),容器通常只有一個IP。開發支持單ip多port模式。2、ingress場景下需要用到iptables來負載均衡,Netfilter子系統支持MPTCP。3、擴展到云原生(容器)場景,打造云原生高穩網絡方案TencentOS RUE(如意)03內核統一資源隔離解決方案,降本增效利器基于RUE的全場景混部:基于內核隔能力,打造全場景混部系統,提升資源利用率服務器A在線業務服務器
20、B離線業務服務器C混部在離線業務混部背景020406080100CPU使用率原生內核隔離性差,混部后毛刺增加,在線業務受嚴重干擾在線單獨離線單獨混部后關鍵問題IDC整體自研利用率低,CPU利用率:15%CaelusTencentOSServer如意(RUE)統一資源隔離TCSCPUCPUIOIO網絡網絡內存內存離線離線在線在線容器調度容器調度應用畫像應用畫像干擾檢測干擾檢測沖突處理沖突處理配置接口配置接口系統監控系統監控服務質量監控系統服務質量監控系統QoSQoS指標指標異常記錄異常記錄配置工具配置工具統計信息統計信息基礎容器服務基礎容器服務全場景混部技術(容器+物理機)容器平臺調度系統整體方
21、案:底層資源隔離(RUE)+上層容器編排上限高,適用性廣,不挑業務OS內核層自動的容器隔離,沖突處理相比社區,內核隔離能力全面增強在線業務:常規業務離線業務:TDW大數據(壓縮和常規)、AI訓練、廣告轉碼17全場景混部系統如意(RUE):定位為全場景混部系統底座,為混部底層提供資源隔離解決方案如意CPU QoS:絕對搶占(BT調度器)1812345213123pick_next_task在線任務離線任務在線離線同時存在在線始終優于離線場景1選出任務跳過離線1CPUNNULL213123pick_next_task在線任務離線任務只存在離線離線得到運行機會場景NULL在線為空選擇離線1CPU運行
22、在線運行離線21354NULLwake_up_process在線任務在線喚醒搶占離線場景 1在線入隊在線任務1need_resched1CPU運行在線獨立的調度類是絕對搶占、低延遲的保障實際驗證干擾率1%以內云原生核心能力(如意)效果:完美底層隔離,資源利用率翻倍,成本降低50%混部關鍵指標基于RUE的CPU隔離CPU隔離效果對比獎項混部大盤CPU利用率:30%,成本降低50%干擾率:離線對在線的影響小,干擾率1%抖動:在線業務的io、網絡帶寬穩定,波動率5%覆蓋規模超2000萬核,供應離線600w核樣板集群CPU占用率:65%,行業標桿2021年7月15日,開源TencentOS系列產品亮相
23、央視經濟半小時騰訊開源TencentOS系列項目亮相央視2021年9月17日,TencentOS榮獲中國信通院授予的“2021年OSCAR尖峰開源項目及開源社區”獎項。騰訊TencentOS榮獲“OSCAR尖峰獎”,創新突破節省上億度電資源基于社區內核的隔離純在線業務典型案例:基于如意(RUE)的全場景混部系統20作業幫“在多重舉措的合力推動下,作業幫容器化的收益顯著,同樣業務遷移前后,使用了 HPA 和在離線混合部署后,成本下降43%,穩定性提升到99.995%,接口響應提升10%。由此,有效支持了作業幫業務的快速迭代,秒級急速擴縮容,服務運行態規范落地和統一的運維環境,多云的環境統一,提升
24、服務可用性?!弊罴褜嵺`|作業幫云原生成本優化實踐成本降低43%穩定性提升至99.995%接口響應提升10%某頭部互聯網廠商資源利用率提升100%規模10萬核+成本節省數百萬/年基于RUE和Crane(騰訊云推出的國內首個云原生成本優化開源項目),整體基于OS內核提供的強隔離、性能主動告警、云原生SLI等高級能力,通過預測,推薦資源和智能彈性配置,提升業務整體的資源利用率,遵循 FinOps 標準,為云原生用戶提供云成本優化一站式解決方案。TencentOS悟凈04內存分級卸載,提升內存利用率22內存分級卸載-悟凈-架構悟凈基于內核內存管理系統 LRU 頁面回收機制,對其核心路徑做了大幅調優與改
25、造,并引入以下幾大獨立自研模塊:UMRD(Userspace Memory Reclaim Daemon):用戶態主動式異步回收進程,根據壓力信息平衡回收策略。DAMON 核心子模塊:主動探測內存熱度,提供分級回收數據源。SWAP hinting 框架:在頁換出時根據頁面熱度進行多級回寫平衡。SWAP balancer 模塊:異步平衡多級 SWAP 設備,精準冷內存沉降。CXL 支持:利用內核 Promote/Demote 框架避免 Page Fault 與 IO,提高性能。核心性能優化:針對內核內存管理核心代碼、Cgroup V1 PSI、SWAP 路徑、Working Set 統計等,進行
26、了大量優化,部分已經upstream23內存分級卸載-悟凈-效果內存節省30+%其他云原生特性05云原生SLI/Ebpf-based云原生監控25云原生SLI-Sevice Level Indicator背景:容器隔離性差,干擾嚴重提升密度,資源限制引發抖動業務隨機抖動,業界難題現有指標:進程級別、全局統計,難用!目標:容器級別、專業、專用常態化部署(低開銷)主動監控異常、主動記錄毫秒級響應SLI方案選擇優點缺點內核原生實現1.在內核里實現,跟蹤開銷最小,性能最優2.可以調用內核所有接口,功能開發不被制約1.擴展性較差2.開發、更新慢3.開發難度相對較高eBPF1.擴展性較好,可以按需動態修改
27、2.開發、部署周期短,開發難度相對低1.Ebpf代碼有較多安全檢查,引入較大開銷2.Ebpf對調用接口有嚴格的限制,功能有限方案對比:基礎能力:選用內核原生方案26云原生SLI-方案特性常態化部署,低開銷,專業級云原生指標主動性能異常上報,毫秒級相應MBUF問題定位(黑匣子),捕捉每一次抖動Load.dLoad.dLoad.rLoad.rLongsysLongsysrundelayrundelayIrqtimeIrqtime(中斷延遲中斷延遲)BlockBlock D DIOIO BlockBlockSleepSleep S S全局內存直接回收全局內存直接回收容器內存直接回收容器內存直接回收全
28、局匿名內存換出全局匿名內存換出容器匿名內存換出容器匿名內存換出全局匿名內存換入全局匿名內存換入容器匿名內存換入容器匿名內存換入全局內存壓縮全局內存壓縮云原生SLIMbufMbuf(黑匣子,實時捕獲異常)(黑匣子,實時捕獲異常)應用監控框架(如應用監控框架(如K8sK8s)實時捕獲主動上報SLI指標分類說明Load.rCPU容器內處于R態的進程平均數量,判斷overloadLoad.dCPU容器內處于R態的進程平均數量,判斷鎖競爭或IO阻塞longsysCPU內核態長延遲。系統調用、缺頁、中斷等原因可能導致rundelayCPU調度延遲。判斷CPU爭搶irqtimeCPU中斷延遲。判斷中斷帶來的
29、影響Block DCPUD狀態阻塞延遲。判斷鎖競爭或IO阻塞IO BlockIOIO阻塞延遲。判斷IO問題內存系列指標內存內存關鍵延遲。判斷各種細致的內存問題27云原生SLI-案例方案:SLI+Mbuf,常態化部署,捕獲隨機抖動典型的業務隨機抖動問題行業難題!現象描述:容器內日志打印5-8s內日志無輸出,業務莫名卡頓隨機出現,無復現規律,持續時間短(秒級)資源無瓶頸,cpu/內存/io/網絡 都正常監控無異常,秒級監控也束手無策效果:抓到關鍵第一現場,定位問題,優化內核后解決28Ebpf-based云原生監控Kernel space容器級別User spaceVerifierBPFRuntim
30、eEvent TargetsBPF actionssocketskprobesuprobestracepoints報文跟蹤連接監控時延監控RTT分布丟包監控存活時間NET總延遲合并數隊列延遲IO地址IO模型IO大小IOCGrouptcptracetcpconnectbiocgsnoopoffwaketimethrottlesnoop基于 Libbpf 和 BCC,實現 per-cgroup 級別的監控工具LibbpfBCCCPU阻塞延遲阻塞原因限流監控CGroupCGroupbiocgpattern29監控工具示例 biocgsnoop:IO監控工具基于cgroup,輸出每個IO的基本信息 t
31、cptrace:網絡監控工具監控tcp網絡連接,輸出skb報文在協議棧中各個點的時間延遲等信息,跟蹤報文在內核中的生命周期應用場景:鏈路延遲發生增大、抖動,協助排查延遲發生的位置,快速定位網絡故障應用場景:IO平均時延變大。按進程IO分別排查延遲發生在硬件還是軟件隊列,同時反應出IO大小和磁盤位置 offwaketime:阻塞進程監控工具監控系統指定時間指定進程的off/on cpu事件及延遲,以及進程阻塞原因及其對應的喚醒者信息應用場景:識別系統長阻塞進程以及對該長阻塞進程等待的資源或者原因進行排查,協助業務或系統調優30Cgroupfs-容器資源視圖隔離背景:容器的整體隔離性還非常不完整,
32、其中,/proc、/sys 文件系統中的一些資源統計信息,還沒有完整的容器化(或者說Namespace化),導致在物理機/虛擬機中的一些常用命令(比如free/top)在容器中運行時,不能準確展示容器視角的信息(默認展示系統級別的全局信息,比如系統總內存和free內存),這也是云原生(容器)場景中一直存在的一類頑疾。CPU彈性調度31彈性容器業務場景CPU1 CPU2 CPU3服務器規格高:256 CPU保證容器服務質量:容器綁定CPU存在流量突發導致的部分容器CPU高負載,而同一臺機器上其它容器CPU空載的情況CPU4 CPU5 CPU6容器1容器2容器1流量突發跑滿所有CPU容器2空閑CP
33、U閑置CPU1 CPU2 CPU3CPU5 CPU6借用容器2空閑的CPU(離線運行)容器2空閑CPU閑置CPU4CPU1 CPU2 CPU3CPU5 CPU6容器1負載降低歸還CPU容器2負載上升取回CPUCPU4012進程cpuset動態伸縮/sys/fs/cgroup/cpuset容器高負載擴展cpuset以及提升quota容器低負載收縮cpuset并且恢復quota基于RUE的多優先級混部系統:由Finops指導,結合Crane,實現多優先級混部,助力業務降本增效AI預測模型分時彈性資源QoST1,T2)T3,T4)不同顏色代表不同業務CPU/內存 request總量減少45%左右Po
34、d規格從主流8-16核減少為1-4核currentoptimization基于“如意”的多優先級混部系統,由Finops指導,關注成本Crane(Crane(容器管理平臺容器管理平臺-FinOpsFinOps基金會基金會)TencentOSTencentOSTKEStackTKEStack(容器服務平臺容器服務平臺)彈性彈性CPUCPU調度調度云原生云原生SLISLI增強增強(關鍵指標上報關鍵指標上報)多優先級混部系統多優先級混部系統(成本大師成本大師)RUERUESLI增強(關鍵指標上報)下一代云原生操作系統06全棧國產化、輕量、安全、可靠、免運維自主可控的下一代云原生操作系統LikeX(H
35、ypervisor)設備模擬組件(VMM)容器編排引擎(Xlet-Server)StartXLisaOS(容器OS)Xlet-NodeGuestcontainercontainer全棧國產化特征輕量化Safety(可靠性)Security(安全性)解決痛點解決版本碎片化的問題容器運行時與內核結合問題多租戶安全隔離問題優勢支撐業務敏捷發布支撐業務長時間穩定運行支撐業務快速彈性伸縮下一代云原生操作系統以容器為中心,虛擬化技術主要用于容器隔離,能更好地支持Serverless/FaaS場景。通過參與貢獻國際頂級開源項目獲得原創技術能力,從而實現全棧國產化、自主可控的下一代云原生操作系統。LisaOS(容器OS)Xlet-NodeGuestcontainercontainer感謝聆聽產品官網介紹:https:/ Server下載地址:http:/