OpenKruise 進(jìn)入 CNCF 沙箱項(xiàng)目孵化
在 CNCF 官方網(wǎng)站(https://www.cncf.io/sandbox-projects/)上可以看到 OpenKruise?已經(jīng)正式成為了 CNCF 沙箱項(xiàng)目。
介紹
Kruise 是 cruise的諧音,'k' for Kubernetes,字面意義巡航,豪華游艇。寓意 Kubernetes 上應(yīng)用的自動巡航,滿載阿里巴巴多年應(yīng)用部署管理經(jīng)驗(yàn)。
Kruise 的目標(biāo)是 automate everything on Kubernetes ! ,Kruise 項(xiàng)目源自于阿里巴巴經(jīng)濟(jì)體應(yīng)用過去多年的大規(guī)模應(yīng)用部署、發(fā)布與管理的最佳實(shí)踐,源于容器平臺團(tuán)隊(duì)對集團(tuán)應(yīng)用規(guī)?;\(yùn)維,規(guī)?;ㄕ镜哪芰?,源于阿里云 Kubernetes 服務(wù)數(shù)千客戶的需求沉淀。Kruise 借力于云原生社區(qū),集成阿里巴巴云原生實(shí)踐之精華,反哺社區(qū),指引業(yè)界云原生化最佳實(shí)踐,少走彎路。Kruise 核心在于自動化,從不同維度解決 Kubernetes 之上應(yīng)用的自動化,包括部署、升級、彈性擴(kuò)縮容、Qos 調(diào)節(jié)、健康檢查、遷移修復(fù)等等。
核心功能
原地升級這是一種新的更新容器鏡像的方法,與 Deployment 和 StatefulSet 中 Pod 重建升級的方法不同,原地升級只是用新鏡像重新啟動特定的容器,并不會重新創(chuàng)建 Pod。這使得更新速度更快,對其他子系統(tǒng)(如調(diào)度器、CNI 或 CSI)的影響也更小。
允許最大不可用實(shí)例的配置社區(qū)原生的 StatefulSet 在升級的過程中是不允許同時升級多個實(shí)例的,這主要是為了某些有狀態(tài)應(yīng)用需要依次按序升級的需求。但是,從阿里巴巴場景,以及阿里云容器平臺之上的客戶了解到,許多應(yīng)用不需要依次按序升級的語義,這樣帶來的問題是效率太低。特別是像阿里巴巴一些應(yīng)用實(shí)例數(shù)巨大的場景,問題尤其顯著。MaxUnavailable 的功能正式為了解決這個問題,它允許應(yīng)用實(shí)例被并行升級,且保持始終保持最大不可用的實(shí)例數(shù)不超過 MaxUnavailable 的限制數(shù)。
Sidecar 容器管理支持在一個單獨(dú)的 CR 中定義 Sidecar 容器,Kruise 控制器將在創(chuàng)建 Pod 時把它們注入到所有符合條件的 Pod 中。除此之外,通過更新 CR 中的 container Spec ,也可以在原地升級 Sidecar 容器鏡像。主容器管理和 Sidecar 容器管理的分離,極大地簡化了開發(fā)者的合作。
UnitedDeployment是一種新的 CRD,用于在由多個區(qū)域組成的集群中實(shí)現(xiàn)高可用部署。它管理多個同類的工作負(fù)載,每個工作負(fù)載都專用于一個區(qū)域??缬虻?Pod 分配由每個工作負(fù)載的副本數(shù)決定。由節(jié)點(diǎn)標(biāo)簽標(biāo)識的域可以是一個可用區(qū)(AZ)或一組同類節(jié)點(diǎn)。
Broadcast Job會在集群中每個 node 上面跑一個 pod 直至結(jié)束。類似于社區(qū)的 DaemonSet, 區(qū)別在于 DaemonSet 始終保持一個 pod 長服務(wù)在每個 node 上跑,而 BroadcastJob 中最終這個 pod 會結(jié)束。相比 DaemonSet,Broadcast 結(jié)束后不再占用資源,這在某些場景中特別適用,比如升級 node 中某些組件,檢測 node 上一些配置是否正確等。
特性
原生 Kubernetes
使用 CRDs 進(jìn)行拓展 支持 Stateful/Stateless/Job Workloads 和各類 Operators
生產(chǎn)級別可用
在生產(chǎn)環(huán)境用于管理數(shù)以萬計(jì)的 Pod 支持具有數(shù)千個節(jié)點(diǎn)的大規(guī)模集群
簡單易用
安裝/卸載 簡單 安裝控制器可選
策略豐富
可以指定 Pod 升級/刪除 可以管理升級順序 升級期間 Pod 優(yōu)雅離線
“更多信息移步 https://github.com/openkruise/kruise
”
?點(diǎn)擊屏末?|?閱讀原文?|?即刻學(xué)習(xí)




