嗨哈囉大家好我好接下來呢由我為大家分享一下Kawana在蝦皮的一個落地實踐的一個過程首先簡單介紹一下我自己我本身在2001年開始的節目容器和克馬克斯相關的這些東西克馬克斯還是一個比較古老的玩法是1.4,一直到現在然後之前也是在滴滴快手很錯的東西,基本上也是一直在外繞容器和克馬克斯的Kawana本身也是開發一枚都可以幹比較擅長填坑,但是也比較擅長挖坑也給很多人挖過很多坑目前集中在集群管理的調舞還有雖然用力提升這方面今天主要分享的內容分三大部分第一部分是蝦皮內部在多集群管理的架構的解決然後第二部分是時間分享,包括我們在這個過程中具體的方案是什麼樣子的以及遇到過那些問題然後是怎麼解決的還有最後的這個做完之後的效果就是一個什麼樣子的然後最後就是一個簡單的總結總結兩望我們以前實現的這個管理其實還是屬於一起實現然後後面還有很多代理實現首先看一下我們內部的一個應用分發的流程大致分為三層然後最上面的一層是給應用戶使用的就是這個應該大家都比較熟悉的一個工作台裡面有類似的庫存機或庫輸的一個東西然後還有一個用來支持業務做變更庫屬的一個系統然後用戶的操作所有的都是在上面這個工作台進行的然後最底下是一個一排四的平台這個東西就類似上午移動那邊的同事介紹的他們實現用那個卡薩爾API的行鞋去實現的機群的創建我們沒有用那個卡薩爾API我們內部是自研力號機群創建的一個系統裡面也是自定義了像卡薩爾MotionSafeMotion相關的一些CRD還有實現的Operator來和內部有的一些個IC或者是TOC的一些個內部系統去交互然後來完成整體的KBS機群的創建然後包括可能大概就是上面列的這些然後灰色的接頭就代表在我們實現做多機群之前的一個英雄文化的路徑然後內部可以看到這個是一個OM的系統也是我們基於開源社區裡面的OM東西自研的並沒有直接去用那個Colorea其實也是歷史原因吧因為當時這個系統做的時候還比較早那個時候Colorea可能也是剛開始出來這邊是自研了然後之前的路徑就是這個灰色接頭使用戶去在工作台上面做一個運用的部署然後在OM這方面他們去連底下所有的KBS的機群就是所有KBS機群其實它OM裡面都有然後它自己根據用戶指定的用戶在部署的時候會指定說我這個東西要部署到KBS區裡面然後它連上對應的那個KBS區是調頓的ADI去把應用上分下去就是之前大概是一個這樣子的流程然後OM的Corp就是我們內部有大概有兩種類型了郭克勞的一個是KBS原生的用的大部分都是Deployment當然也有一小部分的Step Set然後還有OM Cruise裡面的一些比方說Conset主要是用來支持像是原地重啟這種能力的然後綠色接頭這部分是在引入KAML之後的一個流程就是最底下的那個OM對接UPS的這個流程就沒有了然後所有的設計到應用的分發資源編排所有的這個能力都交由KAML的實驗然後OM的話它的規則就比較單一了就跟本身社區裡面對它的定義就比較類似它只是做一個這個某版的渲染具體的資源分發的工作全都下成到KAML這一場來做然後到現在的話我們通過一台式來拖延的主管的那個Bass的機權數量大概有就不到200個了然後這些機權本身最後是希望都通過那個KAML來拖延然後介紹一下如果我們當時為什麼還想為什麼要引入這個KAML這塊首先是在紀錄肯定這塊上午就是有了同學也有問過的話就是紀錄產品的時候會被拖延一些但在我們內部去做這個落地這塊的話我們主要考慮的是三方面首先是牽一的一個成本就是落地原生的東西社區裡面的東西尤其是在公司裡面落地可能最先考慮的就是這些東西到底能不能落地你的成本非常關鍵如果是工作非常大然後也收益和這個成本不疲倦的話說再可能像其實在公司裡面落地的話也比較難然後KAML這塊就非常好的一點是它沒有引入額外的一些的學長們不管是對於我們來說還是對於這個真正的用戶來說所有都是原生的TBS裡面的那些的天所以就是沒有額外的那些學習的門然後本身他在支持這個針對存量TBS組織裡面資源的拖延的時候在他社會的時候也已經支撐那個能力了但後面我們再講那個灰度那塊會設計到它是怎麼樣直接就可以直接拖延現有的這個一些地方分分的所以千里頭本幾乎為零然後第二個是功能和新聞那塊當然這個就跟具體的你現在這個公司裡面需要的功能期望的功能有關這個我就不多說了然後第三個是看那個這個項目在社區裡面的一些火焰度火焰度怎麼樣當時我們也是對比了像卡瑪達摩斯岩還有那個塔特內的這幾個項目最終還是在裡面寫到了卡瑪達因為這個項目非常火焰我們當時引入這個卡瑪達目標什麼的就是剛才那個頭裡面介紹大家也應該能看到我們在引入之前其實那個OM那層是特別重的就是所有東西基本上從API下來的東西都到了這個OM這層然後它越來越有用然後我本身在內部的話這個系統問題也就是越來越有用問題也越來越多我們就想要把這個劫某版渲染和應用分發的這個流程給結有了真正的讓讓OM就只是做一個某版渲染的這個功能然後應用分發的所有的都交給專業的這個總監來做然後第二個就是對接這個集群管理當時我們公司內部有一個背影就是在做一個AZ標榮罵就是那個可容缺然後他們有一個需求就是我們需要對用戶屏蔽這個集群的改改用戶部署的時候之前是直接對接集群的現在是用我們期望是用戶部署的時候它不要選擇集群它直接選擇它的應用要固在哪個可容缺之內然後具體這個應用發的哪個集群那都是平台自己自己決定的然後介紹今天在這方面我們在使用這個Kana為幫做了一些各針對內部的一些需要的功能做的一些適配首先是Kana本身那個集群難以忘然後我們我們一開始使用的是那個Kana 4200就是社區平台自帶的這個面臨好像去創建的Kana的集群在這個技術上做了一些各資訊平台的支持首先是這個Insignal ITCD就是社區平台一個項目你利用的時候它是直接創建一個新的ITCD它不只是使用比方說自己已經有了一個外部的ITCD了它沒有支持這個所以我們是先去支持一下這個功能可以使用自領的ITCD因為在內部我們有對應的剛才提到的Kana 4200就是有對應的Taser平台來創建Taser那就是我們也有ITCD的ITCD來做來對整個的ITCD集群做一些管理所以我們的ITCD集群現在是重量的就是通過其他的方式創建的不是在ITCD的時候直接創建那第二個是主要的形式那這個都比較不見就是ITCD執行完了之後我們並沒有把這些個壓軸電直接給扣拍了只是生存這些壓軸電保存了一下目的也是跟我們公司內部的一些各標準流程Gatons的內部我們內部有一個叫做Blue Break然後整體的集群裡面組件的部署形式就是需要把這些各需要部署的壓軸電上傳到大馬倉庫裡面有平台再去做一些審核然後做部署在這個技術上後來又添加了ITCD的凡是在那個倉庫裡面創建的一些東西在大馬倉庫的平台上創建的一個應用然後通過界面的話這個形式去直接相當於是創在這部的技術裡面創建的一個應用就好就OK其實可以看到這幾個做的一些定時工作都是為了適配我們公司原有的一些各技術設施那通過上面的那一部分整個他們俩集群的組件其實有一天裝好了然後第二個是創發的部分我們做的一些個應用發的一些流程首先是業務集群需要加入到這個他們裡面就是讓他們看下去透過剛才提到業務集群創建其實都是那個一開始是通過蘑菲德爾頓市把它創建出來然後中間接下來接下來我會介紹一下它具體是怎麼的加入到然後第二個是應用分發和規則規則配置這個應該是在使用開發的時候都會經歷的這兩個優惠然後第二個是中間的一部分是上層的那個Omd它會去它對接到開發之後它會去創建對應的Deploy還有需要的那些個TP或者CTP對應的然後那邊就直接操作業務集群它就直接對接這個開發的集群然後第三個就是這邊資源創建好了之後開發自己去把這個應用發到具體的業務集群裡面然後我們看一下集群集群怎麼是怎麼加入到那個主要我們這邊是有一些角色就是也是龍絲內部給你給我一個平台的雲平台這個它會去那個加料的其實就是我們內部的那個卡薩爾維爾達給你給我它會先去通過這個東西創建出來的一個業務集群然後要想法它加到那個卡薩爾裡面我們在這個之上又自己封裝了一層叫Basic Carcel的概念然後Basic Carcel其實是一個寫意兒Basic Carcel然後又加了一個Basic Carcel的那個它去實現從加料的卡薩爾轉化成它買了自己的一個卡薩爾為什麼要這麼做呢因為其實一開始加料自己創建出來的或者是USB自己創建出來的那個卡薩爾它對於業務來說那可能只是一個集群教復了裡面該裝的一些東西裝了對於這個集群對於業務來說還是不可用的一個狀態雖然它通過那個卡薩爾自己檢測是狀態的OK但業務可能因為我們需要這個集群裡面有一些資源是需要在業務的真正部署之前下發到集群裡面或者是一些還可以在這個指責集群裡面給CTF來征環運行的所以我在ASC Carcel裡面去做了這件事ASC Carcel裡面定義了這種狀態首先是一定程然後Property and really還有一個最後維護一開始ASC Carcel直接創建之後它其實是一個出發的狀態然後我們有對應的ASC Carcel的東西就定義你需要在ASC Carcel創建的時候你需要往這個業務集群裡面下發那些資源然後怎麼的判定這個業務集群是已經OK上面可以往我們下面去發發這個應用了然後這個ASC Carcel的Property and really它會去根據定義的那些規則去在業務集群裡面去做相關的一些各職位的工作然後同時也會檢查直到那邊變成Really之後那它這個這個業務的集群就是它們的ASC Carcel才會被認為是真正一個狠狠狀態那在這個之前那個集群雖然在它們本身裡面是Really的但是我們會加一些Paint的東西去保證上層你這個時候去發這個應用的時候你發進去然後當然後面加了一個微目的狀態就是來一對一些個臨時的情況或者是集群故障了之後我們可以去對這個去做一個助理就是也是來保證上層我們就不會發這個新的東西到這個集群裡面這個後面會有一個在社區裡面我們對社區裡面一個具體的一個感應項跟這個地方有點關係後面會結合通過上面的這些工作它就可以實現我們之前的這個用之前的那個業務去跑到它們的這個社區裡面然後就是看怎麼樣的拖延存量的業務這就是剛才提到的看看裡面能不能去支持到一個能力就是這樣怎麼樣讓存量的業務跑到裡面其實就比較簡單是在那個你空著面需要去被拖延的那些個烏龜的上面加上這個就主要是那個commitresolution說alright這個時候業務就去資源同一個地方業務就去面已經好了那它就可以被拖延就是對業務是沒有感視的然後下面的話就是回過回過一些能力用來應對我們在回顧的過程中如果出問題的話說怎麼辦首先我們這個回顧的範圍就是兩個一個是單字二用的回顧然後還有P2用的回顧我們沒有考慮整個集群不可用或者是整個卡打空置面不可用的情況因為那種那種情況的話直接把空置面進了我們可以直接切回到原來偶爾就直連業務集群的那種那種塌捷所以我們只考慮了卡打還是可以用的但是裡面有一些小問題需要針對一部分業務做回顧的這種情況那這種情況其實卡打的已經有一定的支持了如果是它空置面去跟業務集群的裡面的資源怎麼去識別這個問題其實全都是通過在對應results對應的資源上面加上對應的Label和Tation然後如果想讓它脫離卡打空置面的管理的話說只要把對應資源的對應Label和Tation刪了這個天然後最後講一下我們最定制定制開發的一些功能然後可能有一些是吧打還有性能優化情況的一些東西這個比較多我就不一介紹了能挑幾個那個我們可以看一下第五個和第六個這個裡面大部分其實在後來就是現在社區最新版已經支持了可能還有一小部分的是沒有支持的或者是去我們自己這個業務場景說就是不是一個通用的場景然後可以看一下第五個第五個其實就是那個results funding那塊的排氣衝突的問題這個現在已經修復了然後第六個應該是還沒有修復就是我們生成通過那個RD去生成results funding的時候它的work name有可能是衝突的因為之前的那個命名規則是沒有考慮這個資源類型的就是可能不同的 group 產業比如說原生的有一個叫stable side的東西那國版的 growth 裡面其實它也有一個增強的stable side但它倆的看影都是stable side只是 group 很不一樣但是對之前的命名規則它倆就生成出來的那個 RD 就可以完全一樣那就會衝突比如說如果真正一個創建了另外一個就會創建失敗然後還有比方說這個第八個就是設計到原生的那個TRS 裡面本身的一些個bug第九個的話就剛才說的一個業務集群怎麼這樣加入到控制面那塊兒相關的這個問題就是我們希望這個業務集群到底可否是由我們我們平台來控制的而不是他們倆自己認為這個業務集群是或者是有什麼問題那上面的業務就不能發到裡面所以這個是通過就是那種這個是一些個對應的能力就之前它認為這個集群就不可用了但我們是通過一個來處理的這個不是在它檢測而是接觸還有這個時候直接打開看看那如果我想用的話說我直接在對應的deployment上面加上TRS就OK了也就是把那個集群可不可能的控制群交給業務還有一些個性能性能優化的這些問題這個就比較容易都是特別具體的東西然後看一下最後的效果我們當時這是我們當時做完之後效果我們模擬的是二十一個就是一個可控區內有二十五個集群然後每個集群裡面也有兩千個nencels這個可能大家很好理解我們那個業務場景就是每個集群裡面nencels特別多不是說把這個所有的業務放到一個nencels槍然後後面那五就是當時模擬的一個nencels下面有五個的然後成一個二的意思就是每個集群這些東西其實去部署到業務集群裡面的時候它還需要一些一個對應的containment所以這個最後算回來的就是一個單瓶他們倆裡面需要設計到的那個那個集群裡面存了那個work就是最後就是個需要往業務集群裡面下發的work的數量大概是五十萬然後底下是一個我們沒有就是直接使用的原生的這些功能在每個階段有個耗時然後是我們做了一些個修改這不同階段做了修改之後整理這個耗時分別是從這個創建到這個底部那邊特別被調度以及它觀察被調度到真正的到那個到創建創建work以及創建work的work下發到這個業務集群裡面所以基本上從沒有定制之前這個歌唱的延遲都比較大這個時間應該是應該都是好點然後到最終的版本就已經就已經很快了其實最後那項慢還是因為從從下發到這個業務集群的時候其實就跟業務集群的形容有關係了就不是完整他們兩個控制裡面就可以解決的問題最後就是一個簡單總結吧我們在使用社區裡面的一些個項目的時候其實最終真正莫力的狀態還是要去做一些個針對資深場景的一些個油畫不管是功能的裁點或者是性能油畫就像說剛才那個調度性那塊我們其實是去做了一個支持並發調度的一個能力因為原生那個社區裡面的那塊因為調度都是串形的但我們的場景裡面我們是可以做到把它去並行調度的然後這就是需要去解決我們在調度的時候特別是比較大的這個場景然後接下來我們內部有一個可能存在的一些個隱蔽方向包括兩個兩個方向都是跟穩定性和資源中律或者成本下來的首先是那個跨級群的這個資源部署跨級群的部署我們之前我們目前實現的其實還是打印用粉發的一個級別裡面也就為什麼一上來沒有做一下就把它罰到多個級別裡面因為業務沒有這樣的需求等等後面這個業務有需求了之後可以再做然後另外一個就是在業務沒有這個需求的情況下你考慮的是落地如果是一開始就讓它你說你支持了這個功能了但是需要業務配合去改等下對它也沒有收益所以基本上落地的時候也不一樣所以一開始我們又考慮這個東西然後第二個是集群部長遷移集群部長遷移沒有做也是因為一開始我們內部的這個像系統中災了之類的能力都是現場的而且剛才講到我們的應用化集群部署是在可容區辦委內的但是我們的容災是在可容區之外做的就是我們同時比方說雙活是在不同的可容區之內不同的可容區裡面分別部署裡面資源那在這個前提一下其實可容區之內的這個備份之類的或者是集群部長其實也就不是很重要的因為我們在別的可容區裡面還有一份資源如果在一個可容區裡面再保留一份資源的話反而會比較浪費資源我今天的分享就到這兒如果大家對剛才的一些各整個優化點如果有感覺的話也可以加我微信我們私下交流見面這個項目感興趣的可以看一下時間原因我都不再介紹了就是這個TLS之前我看過就副主任HMS是那個但是就看不到這個這個的話我好像沒有找到如果不是IPFS這一塊你有相關經驗嗎這個不好意思沒聽見是沒有部署什麼就是那個IPFS就是在這個TLS上是有是有這方面造成的因為之前想做一些用人家前線的管理這個然後那個什麼我今天就是在這個就是是根部的這麼一個集群上想弄這種大家看這個我好像沒那種建築如果部署IPFS這塊能分享一下嗎之前我們那個其實是沒有特許說的然後我沒有研究過那個算是一個有狀態的有狀態的管理好像看來這塊本身支持的這些能力還是很大程度上還是取決於你自身背後的那個比方說還在你開始支持那個stele side的時候好像也不是很好自己就能支持的最後去支持還是依賴部署是當時升級到一點二六之後本身這個這個東西能支持比如說在東北市區裡面去控制它自己的就是能不能它這個過程之間然後我們有那個什麼就說是上升級方面這種管理對但是內部的話實際上這個它來的這個管理就好像這個我確實沒有研究不好意思那就一個問題如果大家還有問題的話可以講一下這個同學在邀請我們有這個請問您教育就是我們現在也在做那個多疑群但是我們有一個遇到一個現實的問題就是說我們這個生活這個多疑群需要介紹什麼還有兩個想不想一組給您請教一下就是說比如剛才我對我介紹的一些都是應用的編排編排不屬我沒有介紹流量是因為其實我們公司內部不管是東西向流量還是南北向流量都有專門的就是已經去支持了而且這些就是在支持的過程中本身就是極權不改的不管你應用在哪個我們在支持我們在規則過程中存量的業務剛才提到你只需要在你的控制面資源上面加分就可以拖延業務極權的資源那我理解這個過程本身也不會是一道操作就是之前什麼樣子拖延了之後還是什麼樣子就是拖延拖延存量之前什麼樣子那我們掌聲感謝一下