
一 序言
-
第一次全面統一排程:電商、搜尋、odps離線和螞蟻業務全面上ASI統一排程架構,整個業務核數達到了驚人的數千萬核。
-
第一次將搜尋業務“無感知”平滑遷移到ASI:近千萬核的業務,業務無感的搬到ASI(但是我們卻經歷了很多個不眠之夜)。
-
ASI場景的K8s單叢集規模超過萬臺節點,數百萬核,超越K8S社群的5000臺規模,不斷最佳化大規模叢集的效能和穩定性。
-
中介軟體服務第一次用雲產品架構支援集團業務:中介軟體基於ASI公共雲架構,將中介軟體服務平滑遷移到雲上,用雲產品架構支援集團業務,實現“三位一體”。
-
一次正常的Kubernetes大版本升級流程,在升級Kubelet時把一個叢集近千臺業務POD全部重建;
-
一次線上非標操作,將大批次的vipserver服務全部刪除,幸虧中介軟體有推空保護,才沒有對業務造成災難性影響;
-
節點證書過期,由於節點自愈元件故障情況誤判,並且風控/流控規則判斷也有誤,導致自愈元件誤將一個叢集300+節點上的業務全部驅逐;
二 ASI 技術架構形態
|
|
|
|
|
|
|
|
三 ASI全託管運維支撐體系

-
元叢集(KOK架構底層K):用於承載Kubernetes業務叢集的核心管控元件,將業務叢集管控容器化部署,能保證部署方式更加標準,部署效率也會大大提升。
-
Control-Plane:就是業務叢集核心管控4大件:kube-apiserver/kube-controller-manager/kube-scheduler 和 etcd 叢集。
-
Add-Ons:Serverless核心功能元件,排程增強元件(統一排程器)、網路元件、儲存元件、Workload元件(OpenKruise)、coredns和其他一些旁路元件。
-
Data-Plane:節點管控元件,比如containerd、kubelet,kata 等,還有一些其他節點上的外掛。

-
統一變更管控:這個是我們從ASI的第一天就開始建設的系統能力,因為從阿里巴巴技術發展過程中吸取的經驗教訓來看,很多重大故障都是由於變更不規範、沒評審、沒風險卡點導致;
-
叢集運維管控:ACK會提供K8S叢集全託管的標準產品能力,但是如何/何時做規模化升級的編排、驗證、監控是我們需要考慮;並且我們還需要建設合理的備容機制,保證叢集的穩定性;
-
ETCD運維管控:ETCD也是完全基於ACK的提供的全託管ETCD Serverless產品能力,我們會和ACK同學一起共建ETCD效能最佳化、備容來更好的服務ASI的超大規模叢集;
-
元件運維管控:ASI運維體系非常核心的能力建設,Serverless全託管服務,最核心的就是各個核心元件都要有相應的研發團隊進行功能擴充套件和運維支援。這樣如何定義研發同學的研發模式,確保日常運維的穩定性和效率是ASI產品能支援大量業務的關鍵。所以在ASI成立之初(2019年支援集團業務上雲)我們就建立起了ASI元件中心,逐漸定義和最佳化ASI核心元件的研發、運維模式;
-
節點全託管運維管控:這塊是非常多雲產品團隊希望容器服務提供的能力,特別業務產品團隊,他們對基礎設施非常不瞭解,希望有團隊能幫忙將節點運維全託管掉。節點運維能力也是ASI在支撐阿里集團過程中非常重要的能力沉澱,我們也將這部分經驗輸出到售賣區,並繼續不斷最佳化。雲上最大的特點就是資源彈性,ASI在售賣區也為雲產品使用者提供了節點極致彈效能力。
-
1-5-10能力建設:雲上使用者有一個非常重要的特點,對故障容忍度非常低。這也給ASI帶來了非常大的挑戰,如何及時發現、排查和恢復問題,是我們一直要不斷探索的。
-
資源運營:備容,成本最佳化一直都是基礎設施服務要解的問題,我們既要確保服務執行穩定(比如不OOM,不出現CPU爭搶),又要降低成本,更要降低雲產品的服務成本。
1 叢集全託管運維能力
-
所有變更是不是都有變更風險管控?
-
這麼多的叢集,這麼多的節點(ASI單叢集已經超過了上萬節點),怎麼做灰度穩定性風險最小?
-
黑屏變更無法杜絕,如何把控風險?
-
單個運維動作雖然不難,但是我們經常面臨的是多個運維操作組合的複雜操作,系統如何方便的去編排這些運維操作?
統一變更風險管控



變更灰度能力

-
更新不及時:新增了一個叢集,但是沒有通知相關同學,沒有加到對應的pipeline;
-
自動適配能力不夠:ASI新接入了一個雲產品,需要人工新加一條pipeline,經常更新不及時;
-
維護成本高:隨著業務越來越多,各個研發owner要自己維護非常多條pipeline;
-
擴充套件能力不足:pipeline順序不能動態調整,ASI支援雲產品之後,有一個非常重要的需求就是按照GC等級進行灰度,靜態pipeline完全無法支援。

-
元件灰度釋出的時候,透過Cluster-Scheduler篩選的叢集範圍肯定不會漏叢集;
-
叢集釋出順序按照GC等級來進行權重設定,也能根據叢集的規模資料來動態調整叢集的權重;
-
研發釋出的時候,不需要再維護多條靜態pipeline,只需要選擇元件釋出範圍,會自動進行叢集釋出順序編排。
叢集webshell工具

-
許可權精細化管控:許可權與使用者繫結,有效期、許可權範圍嚴格管控;
-
安全:不會給使用者提供證書,所以不會出現證書洩漏的問題;
-
審計:所有操作都有審計;
-
風控:檢測危險操作,發起線上審批之後再執行操作。
變更編排能力

-
PipelineController:維護任務間的依賴資訊 -
TaskController:任務狀態資訊維護
-
TaskScheduler:任務排程 -
Task/Worker:任務執行


小結
2 元件全託管運維能力


-
IaC元件模型:利用K8S宣告式的設計,來將所有ASI元件型別的變更全部改為面向終態的設計;
-
統一變更編排:元件變更最重要的是灰度,灰度最重要的是叢集/節點灰度順序,所有元件都需要變更灰度編排;
-
元件雲原生改造:原來節點基於天基的包變更管理改造成K8S原生Operator面向終態的設計,這樣節點元件實現基本的元件變更通道、分批、暫停等能力。由上層的Ops系統來實現元件版本管理、灰度變更編排等。

3 節點全託管運維能力
節點全生命週期定義
-
節點生產前:售賣區比較複雜的場景是每一個雲產品都有一套或多套資源賬號,還有很多需要自定義ECS映象。這些都需要在新業務接入時進行詳細定義;
-
節點匯入時:叢集節點匯入時需要建設節點建立/擴容/匯入/下線等操作;
-
節點執行時:節點執行時往往是問題最多的階段,這塊也是需要重點能力建設的階段,如節點元件升級、批次執行指令碼能力、cve漏洞修復,節點巡檢、自愈能力等等;
-
節點下線時:在節點成本最佳化、核心cve漏洞修復等場景下,都會需要節點騰挪、下線等規模化節點運維能力;
-
節點故障時:在節點故障時,我們需要有節點問題快速探測能力、問題診斷能力和節點自愈能力等。

節點能力建設大圖

節點彈性

-
管控層面:透過控制併發度,可以快速完成幾百臺ECS的彈性任務處理;
-
元件部署最佳化:
-
daemonset元件全部修改為走Region vpc內部地址拉取; -
rpm元件採用ECS映象內預裝模式,並進行節點元件部署序編排來提升節點元件安裝速度; -
最後就是yum源頻寬最佳化,從原來走共享頻寬轉為獨佔頻寬模式,避免被其他rpm下載任務影響我們節點初始化。
-
業務初始化:引入dadi映象預熱技術,節點匯入過程中可以快速預熱業務映象,目前能達到10g大小映象的業務拉起只需要3min左右。
4 1-5-10 能力建設
-
風控:在任何場景下,ASI都應該具備踩剎車的能力; -
KubeProbe:快速探測叢集核心鏈路穩定性問題;
-
自愈:龐大的節點規模,非常依賴節點自愈能力。
風控

-
KubeDefender限流:對一些核心資源,比如pod、service、node,的操作(特別是Delete操作)按照1m、5m、1h和24h這樣的時間維度設定操作令牌。如果令牌消耗完就會觸發熔斷。
-
UA限流:按時間維度設定某一些服務(UserAgent來標識)操作某一些資源的QPS,防止訪問apiserver過於頻繁,影響叢集穩定性。UA限流能力是ACK產品增強能力。
-
APF限流:考慮apiserver的請求優先順序和公平性,避免在請求量過大時,有一些重要控制器的被餓死。K8S原生增強能力。
KubeProbe
1)中心架構

2)常駐Operator架構

自愈

-
診斷、自愈規則更加豐富:目前的診斷、自愈規則很多場景下都沒有覆蓋,需要不斷最佳化覆蓋,更多節點故障場景;
-
基於節點池的精細化的自愈風控、流控:節點自愈的前提是不能讓現狀變的更糟,所以我們需要在做自愈時,做更加精確的判斷;
-
節點自愈能力與上層業務打通:不同業務形態,對節點自愈的要求不同。比如Flink業務都是任務型別,遇到節點問題需要我們儘快驅逐業務,觸發任務重建,最怕的就是任務“半死不活”;中介軟體/資料庫業務都是有狀態服務,不允許我們隨便驅逐業務,但是我們如果把自愈能力與上層業務邏輯打通,就可以做到將節點故障上透給業務,讓業務來決策是否要自愈,以及業務如何自愈。
四 未來展望
五 求賢若渴
歡迎對雲原生、kubernetes、SRE、容器 有興趣的同學,您也可以加入我們,一起參與精彩的雲原生激情澎湃未來。聯絡 [email protected]。
Cassandra資料庫入門與實戰
Apache Cassandra是一套開源分散式NoSQL資料庫系統。它最初由Facebook開發,用於儲存收件箱等簡單格式資料,2008年開源後,由於Cassandra良好的可擴充套件性,被Digg、Twitter等知名Web 2.0網站所採納,成為了一種流行的分散式結構化資料儲存方案。和其他資料庫比較,Cassandra有支援線性擴充套件、可以處理大量資料集、易於大規模部署、高度容錯等特點,因此也常年的權威資料庫榜單DB-Engines上排名前十,寬表領域排名第一。
為了更好地將阿里雲的資料庫技術能力回饋給開發者,和百萬開發者共同成長。阿里雲聯合Cassandra商業公司DataStax打造了本課程,邀請中美知名資料庫技術專家共同授課,帶你上手Cassandra,訓練營涵蓋Cassandra分散式資料庫、大資料分析、AI等多個前沿領域,讓我們一起探索雲計算與AI浪潮下的下一個職業風口,也讓你在MySQL、PG、MongoDB等資料庫基礎上,加持海量擴充套件的分散式資料庫技能。
關鍵詞
問題
雲原生
業務
技術