OpenKruise 阿里加持云原生的利器

一、背景

如何在 Kubernetes 集群中部署節(jié)點組件呢献宫?相信大家對 DaemonSet 并不陌生愿待,它能夠幫助我們將定義好的 Pod 部署到所有符合條件的 Node 上,這大大減輕了過去我們維護節(jié)點上各類守護進程的痛苦拉盾。

在阿里巴巴內(nèi)部的云原生環(huán)境中桨菜,存在不少網(wǎng)絡(luò)、存儲捉偏、GPU倒得、監(jiān)控等等相關(guān)的節(jié)點組件都是通過 DaemonSet 部署管理的。但是隨著近兩年 Kubernetes 集群規(guī)模越來越大夭禽,所有核心業(yè)務(wù)逐漸全量上云原生之后霞掺,我們越發(fā)感受到原生 DaemonSet 很難滿足大規(guī)模、高可用的復(fù)雜場景需求讹躯。

大家可以理解為原生的 DaemonSet 確實解決了 0 -> 1 的問題菩彬,避免了直接管理 Node 上各類軟件包和守護進程的難題,能做到用一致化的 Pod 來部署節(jié)點組件潮梯。但是在部署之后呢骗灶?我們面臨的是 1 -> N 的不斷迭代升級的問題了,而在升級能力方面秉馏,原生 DaemonSet 做的實在有些敷衍了事的感覺耙旦。

二、由來

相信多數(shù)人使用 DaemonSet 基本都是默認(rèn)的 RollingUpdate 滾動升級萝究,這本身是沒問題的母廷,問題就在于滾動升級時只支持了 maxUnavailable 一個策略,這就讓我們很難接受了糊肤。目前阿里巴巴內(nèi)的 Kubernetes 不少已經(jīng)做到單集群上萬節(jié)點琴昆,這些節(jié)點可能有不同的機型、拓?fù)涔萑唷⒑诵某潭纫瞪帷?nèi)核版本等等,而 DaemonSet 升級也覆蓋到這上萬節(jié)點上的 daemon Pod升酣、涉及所有節(jié)點上的應(yīng)用 Pod舷暮。

面對如此復(fù)雜和規(guī)模化的環(huán)境噩茄,原生 DaemonSet 沒有灰度下面、沒有分批、沒有暫停绩聘、沒有優(yōu)先級沥割,僅僅用一個 maxUnavailable 策略顯然是無法滿足的耗啦。要知道 daemon Pod 即使配置了 readinessProbe 往往也只能檢查容器內(nèi)進程是否啟動運行,而對于進程的運行情況很難考量机杜。

因此帜讲,即使 DaemonSet 發(fā)布了一個代碼有 bug 的版本,只要進程能正常啟動則 maxUnavailable 策略就無法保護椒拗,DaemonSet 會一直發(fā)布下去似将;如果升級開始了一段時間后才發(fā)現(xiàn)問題,那此時很可能故障范圍就已經(jīng)覆蓋到整個集群了蚀苛。

三 什么是OpenKruise

Kruise 是 cruise的諧音在验,'k' for Kubernetes. 字面意義巡航,豪華游艇堵未。寓意Kubernetes上應(yīng)用的自動巡航译红,滿載阿里巴巴多年應(yīng)用部署管理經(jīng)驗。

Kruise 的目標(biāo)是automate everything on Kubernetes ! Kruise 項目源自于阿里巴巴經(jīng)濟體應(yīng)用過去多年的大規(guī)模應(yīng)用部署兴溜、發(fā)布與管理的最佳實踐,源于容器平臺團隊對集團應(yīng)用規(guī)某苌拢化運維拙徽,規(guī)模化建站的能力诗宣,源于阿里云Kubernetes服務(wù)數(shù)千客戶的需求沉淀膘怕。Kruise 借力于云原生社區(qū),集成阿里巴巴云原生實踐之精華召庞,反哺社區(qū)岛心,指引業(yè)界云原生化最佳實踐,少走彎路篮灼。

四忘古、OpenKruise 核心特性

OpenKruise 是 Kubernetes 的一個標(biāo)準(zhǔn)擴展,它可以配合原生 Kubernetes 使用诅诱,并為管理應(yīng)用容器髓堪、sidecar、鏡像分發(fā)等方面提供更加強大和高效的能力娘荡。

核心功能

  • 原地升級

原地升級是一種可以避免刪除干旁、新建 Pod 的升級鏡像能力。它比原生 Deployment/StatefulSet 的重建 Pod 升級更快炮沐、更高效争群,并且避免對 Pod 中其他不需要更新的容器造成干擾。

  • Sidecar 管理

支持在一個單獨的 CR 中定義 sidecar 容器大年,OpenKruise 能夠幫你把這些 Sidecar 容器注入到所有符合條件的 Pod 中换薄。這個過程和 Istio 的注入很相似玉雾,但是你可以管理任意你關(guān)心的 Sidecar。

  • 跨多可用區(qū)部署

定義一個跨多個可用區(qū)的全局 workload专控,容器抹凳,OpenKruise 會幫你在每個可用區(qū)創(chuàng)建一個對應(yīng)的下屬 workload。你可以統(tǒng)一管理他們的副本數(shù)伦腐、版本赢底、甚至針對不同可用區(qū)采用不同的發(fā)布策略。

...

CRD 列表

  • CloneSet

提供更加高效柏蘑、確定可控的應(yīng)用管理和部署能力幸冻,支持優(yōu)雅原地升級、指定刪除咳焚、發(fā)布順序可配置洽损、并行/灰度發(fā)布等豐富的策略,可以滿足更多樣化的應(yīng)用場景革半。

  • Advanced StatefulSet

基于原生 StatefulSet 之上的增強版本碑定,默認(rèn)行為與原生完全一致,在此之外提供了原地升級又官、并行發(fā)布(最大不可用)延刘、發(fā)布暫停等功能。


image.png
  • SidecarSet

對 sidecar 容器做統(tǒng)一管理六敬,在滿足 selector 條件的 Pod 中注入指定的 sidecar 容器碘赖。


image.png
  • UnitedDeployment

通過多個 subset workload 將應(yīng)用部署到多個可用區(qū)。

  • BroadcastJob

配置一個 job外构,在集群中所有滿足條件的 Node 上都跑一個 Pod 任務(wù)普泡。


image.png
  • Advanced DaemonSet

基于原生 DaemonSet 之上的增強版本,默認(rèn)行為與原生一致审编,在此之外提供了灰度分批撼班、按 Node label 選擇、暫停垒酬、熱升級等發(fā)布策略权烧。


image.png

五、未來規(guī)劃Roadmap

Kruise 核心在于自動化伤溉,我們將從不同維度解決 Kubernetes之上應(yīng)用的自動化般码,包括,部署乱顾,升級板祝,彈性擴縮容,Qos調(diào)節(jié)走净,健康檢查券时,遷移修復(fù)等等孤里。此次Kruise開源的內(nèi)容主要在應(yīng)用部署,升級方面橘洞,即一套增強版controller組件用于應(yīng)用的部署和級和運維捌袜。后續(xù),Kruise會依次開源智能化的彈性擴縮容組件炸枣,以及應(yīng)用Qos自調(diào)節(jié)能力的組件等虏等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市适肠,隨后出現(xiàn)的幾起案子霍衫,更是在濱河造成了極大的恐慌,老刑警劉巖侯养,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敦跌,死亡現(xiàn)場離奇詭異,居然都是意外死亡逛揩,警方通過查閱死者的電腦和手機柠傍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辩稽,“玉大人惧笛,你說我怎么就攤上這事÷в” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵静檬,是天一觀的道長炭懊。 經(jīng)常有香客問我,道長拂檩,這世上最難降的妖魔是什么侮腹? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮稻励,結(jié)果婚禮上父阻,老公的妹妹穿的比我還像新娘。我一直安慰自己望抽,他們只是感情好加矛,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著煤篙,像睡著了一般斟览。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辑奈,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天苛茂,我揣著相機與錄音已烤,去河邊找鬼。 笑死妓羊,一個胖子當(dāng)著我的面吹牛胯究,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躁绸,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼裕循,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涨颜?” 一聲冷哼從身側(cè)響起费韭,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庭瑰,沒想到半個月后星持,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡弹灭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年督暂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穷吮。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡逻翁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捡鱼,到底是詐尸還是另有隱情八回,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布驾诈,位于F島的核電站缠诅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乍迄。R本人自食惡果不足惜管引,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闯两。 院中可真熱鬧褥伴,春花似錦、人聲如沸漾狼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逊躁。三九已至伤锚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屯援。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工弯淘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吉懊,地道東北人庐橙。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓态鳖,卻偏偏與公主長得像浆竭,于是被迫代替她去往敵國和親邦泄。 傳聞我的和親對象是個殘疾皇子顺囊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353