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