OpenKruise云原生應(yīng)用自動(dòng)化管理引擎
OpenKruise 是一個(gè)基于 Kubernetes 的擴(kuò)展套件,主要聚焦于云原生應(yīng)用的自動(dòng)化,比如 部署、發(fā)布、運(yùn)維以及可用性防護(hù)。
OpenKruise 是阿里云開(kāi)源的云原生應(yīng)用自動(dòng)化管理引擎,它來(lái)自于阿里巴巴多年來(lái)容器化、云原生的技術(shù)沉淀,是阿里巴巴集團(tuán)上云全面使用的部署基座,例如雙十一主體相關(guān)的電商類(lèi)業(yè)務(wù)、中間件等應(yīng)用都是統(tǒng)一使用 OpenKruise 做應(yīng)用部署、發(fā)布、管理、運(yùn)維。
OpenKruise 項(xiàng)目從 2019 年的 KubeCon China 上宣布開(kāi)源,至今值此 KubeCon China 2021 之際即將發(fā)布 v1.0.0 大版本。在這兩年多的時(shí)間內(nèi),OpenKruise 經(jīng)歷了十多個(gè)版本的迭代,成為了 CNCF Sandbox 項(xiàng)目
OpenKruise 提供的絕大部分能力都是基于 CRD 擴(kuò)展來(lái)定義,它們不存在于任何外部依賴,可以運(yùn)行在任意純凈的 Kubernetes 集群中。
增強(qiáng)版本的 Workloads
OpenKruise 包含了一系列增強(qiáng)版本的 Workloads(工作負(fù)載),比如 CloneSet、Advanced StatefulSet、Advanced DaemonSet、BroadcastJob 等。它們不僅支持類(lèi)似于 Kubernetes 原生 Workloads 的基礎(chǔ)功能,還提供了如原地升級(jí)、可配置的擴(kuò)縮容/發(fā)布策略、并發(fā)操作等。
原地升級(jí)是一種升級(jí)應(yīng)用容器鏡像甚至環(huán)境變量的全新方式。它只會(huì)用新的鏡像重建 Pod 中的特定容器,整個(gè) Pod 以及其中的其他容器都不會(huì)被影響。因此它帶來(lái)了更快的發(fā)布速度,以及避免了對(duì)其他 Scheduler、CNI、CSI 等組件的負(fù)面影響。
應(yīng)用的旁路管理
OpenKruise 提供了多種通過(guò)旁路管理應(yīng)用 sidecar 容器、多區(qū)域部署的方式,“旁路” 意味著你可以不需要修改應(yīng)用的 Workloads 來(lái)實(shí)現(xiàn)它們。比如,SidecarSet 能幫助你在所有匹配的 Pod 創(chuàng)建的時(shí)候都注入特定的 sidecar 容器,甚至可以原地升級(jí)已經(jīng)注入的 sidecar 容器鏡像、并且對(duì) Pod 中其他容器不造成影響。而 WorkloadSpread 可以約束無(wú)狀態(tài) Workload 擴(kuò)容出來(lái) Pod 的區(qū)域分布,賦予單一 workload 的多區(qū)域和彈性部署的能力。
高可用性防護(hù)
OpenKruise 在為應(yīng)用的高可用性防護(hù)方面也做出了很多努力。目前它可以保護(hù)你的 Kubernetes 資源不受級(jí)聯(lián)刪除機(jī)制的干擾,包括 CRD、Namespace、以及幾乎全部的 Workloads 類(lèi)型資源。相比于 Kubernetes 原生的 PDB 只提供針對(duì) Pod Eviction 的防護(hù),PodUnavailableBudget 能夠防護(hù) Pod Deletion、Eviction、Update 等許多種 voluntary disruption 場(chǎng)景。
關(guān)系對(duì)比?
OpenKruise vs. Kubernetes?
簡(jiǎn)單來(lái)說(shuō),OpenKruise 對(duì)于 Kubernetes 是一個(gè)輔助擴(kuò)展角色。
Kubernetes 自身已經(jīng)提供了一些應(yīng)用部署管理的功能,比如一些基礎(chǔ)工作負(fù)載。 但對(duì)于大規(guī)模應(yīng)用與集群的場(chǎng)景,這些基礎(chǔ)功能是遠(yuǎn)遠(yuǎn)不夠的。
OpenKruise 可以被很容易地安裝到任意 Kubernetes 集群中,它彌補(bǔ)了 Kubernetes 在應(yīng)用部署、升級(jí)、防護(hù)、運(yùn)維 等領(lǐng)域的不足。
OpenKruise vs. Platform-as-a-Service (PaaS)?
OpenKruise 不是一個(gè) PaaS 平臺(tái),并且也不會(huì)提供任何 PaaS 層的能力。
它是一個(gè) Kubernetes 的標(biāo)準(zhǔn)擴(kuò)展套件,目前包括 kruise-manager 和 kruise-daemon 兩個(gè)組件。 PaaS 平臺(tái)可以通過(guò)使用 OpenKruise 提供的這些擴(kuò)展功能,來(lái)使得應(yīng)用部署、管理流程更加強(qiáng)大與高效。
