KubeSphere 3.3.0 發(fā)布:全面擁抱 GitOps
2022 年 6 月 27 日,KubeSphere 開源社區(qū)激動(dòng)地向大家宣布,KubeSphere 3.3.0 正式發(fā)布!
CNCF 發(fā)布的 2021 年度調(diào)查報(bào)告指出,容器和 K8s 的事實(shí)地位已經(jīng)趨于穩(wěn)固,并慢慢退居“幕后”,類似于無處不在的 Linux,人們甚至都感覺不到它的存在。這要得益于眾多致力于降低用戶使用門檻的 K8s 管理平臺(tái),KubeSphere 便是這其中的佼佼者,它幫助用戶屏蔽了底層 K8s 集群的復(fù)雜性和差異性,提供了可插拔的開放式架構(gòu),無縫對(duì)接第三方應(yīng)用,極大地降低了企業(yè)用戶的使用門檻。
2021 年 KubeSphere 先后推出了 ??v3.1 和 ??v3.2 兩個(gè)大版本,帶來了 “邊緣計(jì)算”、“計(jì)量計(jì)費(fèi)”、“GPU 資源調(diào)度管理” 等眾多令人期待的功能,將 K8s 從云端擴(kuò)展至邊緣,并進(jìn)一步增強(qiáng)了在云原生 AI 場(chǎng)景的使用體驗(yàn)。
今天,KubeSphere 3.3.0 帶來了更多令人期待的功能,新增了基于 GitOps 的持續(xù)部署方案,進(jìn)一步優(yōu)化了 DevOps 的使用體驗(yàn)。同時(shí)還增強(qiáng)了 “多集群管理、多租戶管理、可觀測(cè)性、應(yīng)用商店、微服務(wù)治理、邊緣計(jì)算、存儲(chǔ)” 等特性,更進(jìn)一步完善交互設(shè)計(jì),并全面提升了用戶體驗(yàn)。
并且,v3.3.0 得到了來自青云科技之外的更多企業(yè)與用戶的貢獻(xiàn)和參與,無論是功能開發(fā)、功能測(cè)試、缺陷報(bào)告、需求建議、企業(yè)最佳實(shí)踐,還是提供 Bug 修復(fù)、國(guó)際化翻譯、文檔貢獻(xiàn),這些來自開源社區(qū)的貢獻(xiàn)都為 v3.3.0 的發(fā)布和推廣提供了極大的幫助,我們將在文末予以特別致謝!
解讀 KubeSphere 3.3.0 重大更新
更易用的 DevOps
KubeSphere DevOps 從 3.3.0 開始,后端已支持獨(dú)立部署,并提供了基于 GitOps 的持續(xù)部署(Continuous Deployment, CD)方案,引入 Argo CD 作為 CD 的后端,可以實(shí)時(shí)統(tǒng)計(jì)持續(xù)部署的狀態(tài)。
以云原生 FaaS 項(xiàng)目 ??OpenFunction 為例,假設(shè)您的 KubeSphere 集群中已經(jīng)部署了 nginx-ingress 和 knative-serving,可以通過 GitOps 持續(xù)部署 OpenFunction 的其他組件。
Jenkins 作為一款用戶基數(shù)極大、生態(tài)豐富的 CI 引擎,我們會(huì)讓 Jenkins 真正地“扮演”引擎的角色——退入幕后持續(xù)為大家提供穩(wěn)定的流水線功能。之前 KubeSphere DevOps 通過輪詢的方式來實(shí)現(xiàn) Jenkins 流水線的數(shù)據(jù)同步,浪費(fèi)了很多計(jì)算資源,本次新增了一個(gè) Jenkins 插件,只要 Jenkins 端有相應(yīng)的事件發(fā)生,就可以通過 Webhook 的形式立即將事件發(fā)送到 ks-devops[1]。
KubeSphere DevOps 從 3.1.0 開始便內(nèi)置了兩個(gè)常用的流水線模板,幫助 DevOps 工程師提升 CI/CD 流水線的創(chuàng)建與運(yùn)維效率。但內(nèi)置的模板內(nèi)嵌到了前端代碼中,很難被改變。3.3.0 對(duì)流水線模板進(jìn)行了重構(gòu),新增多款基于 CRD 的內(nèi)置流水線模板,支持參數(shù)設(shè)置,用戶也可以通過 CR 創(chuàng)建多個(gè)自定義的模板。
多集群與多租戶
云原生技術(shù)的爆發(fā)倒逼應(yīng)用的可移植性越來越高,最終會(huì)有越來越多的組織選擇跨不同的云廠商或者在不同的基礎(chǔ)設(shè)施上運(yùn)行和管理多個(gè) K8s 集群,可以說云原生的未來就是面向多集群的應(yīng)用交付。
KubeSphere 為用戶提供了統(tǒng)一的控制平面,可以將應(yīng)用程序及其副本分發(fā)到位于公有云和本地環(huán)境的多個(gè)集群。KubeSphere 還擁有跨多個(gè)集群的豐富可觀測(cè)性,包括集中監(jiān)控、日志系統(tǒng)、事件和審計(jì)日志等。
之前 KubeSphere 的管理權(quán)限是針對(duì)所有集群分配的,無法針對(duì)單獨(dú)的集群設(shè)置權(quán)限。從 v3.3.0 開始,KubeSphere 支持分別為每個(gè)集群設(shè)置集群成員和集群角色,提供了更細(xì)粒度的權(quán)限管控機(jī)制,進(jìn)一步完善了 KubeSphere 的多租戶系統(tǒng)。
KubeSphere 通過 CustomResourceDefinition(CRD)來定義集群,并將每個(gè)集群的信息保存在 CR 中。但 CR 只會(huì)保存在 host 集群中,member 集群中的應(yīng)用無法獲取自身所在集群的信息(比如集群名稱),部分功能實(shí)現(xiàn)起來比較麻煩。比如告警管理系統(tǒng)發(fā)送通知時(shí)需要在通知中添加集群的標(biāo)簽,以標(biāo)識(shí)該通知來自哪個(gè)集群,但無法自動(dòng)獲取,只能手動(dòng)設(shè)置。
v3.3.0 解決了這個(gè)痛點(diǎn),將集群名稱添加到了 ConfigMap kubesphere-config 中,因?yàn)槊總€(gè)集群都會(huì)有這個(gè) ConfigMap,所以集群中的應(yīng)用可以通過這個(gè) ConfigMap 獲取到自身所在的集群名稱。
除了以上這些改進(jìn)之外,還優(yōu)化了多集群的管理體驗(yàn),比如可以直接在 Console 界面更新每個(gè)集群的 kubeconfig 內(nèi)容。
而且當(dāng) member 集群 kubeconfig 中的證書即將過期時(shí)會(huì)即時(shí)提醒用戶,用戶收到提示后可以盡快通過上述方法更新集群的 kubeconfig 內(nèi)容。
邊緣節(jié)點(diǎn)納管
KubeSphere 通過與 KubeEdge 集成,解決了邊緣節(jié)點(diǎn)納管、邊緣工作負(fù)載調(diào)度和邊緣可觀測(cè)性等難題,結(jié)合 KubeEdge 的邊緣自治功能和 KubeSphere 的多云與多集群管理功能,可以實(shí)現(xiàn)云-邊-端一體化管控。
v3.3.0 優(yōu)化了邊緣節(jié)點(diǎn)的管控能力,可以直接在 Console 界面登錄邊緣節(jié)點(diǎn)的終端,以便直接在邊緣端進(jìn)行操作,比如:
- 下載鏡像,更新邊緣端應(yīng)用;
- 在邊緣端更新 EdgeCore 和 Docker;
- 修改邊緣節(jié)點(diǎn)的機(jī)器配置;
- ...
當(dāng)然,Console 界面不僅可以登錄邊緣節(jié)點(diǎn),也可以登錄普通的節(jié)點(diǎn)。
我們還將 KubeEdge 從 v1.7.2 升級(jí)到了 v1.9.2,同時(shí)移除了 EdgeWatcher 組件,因?yàn)?KubeEdge 已經(jīng)提供了類似的功能。
增強(qiáng)可觀測(cè)性
KubeSphere 提供了豐富的可視化功能,支持從基礎(chǔ)設(shè)施到應(yīng)用的多維度指標(biāo)監(jiān)控。此外,KubeSphere 還集成了許多常用的工具,包括多租戶日志查詢和收集、告警和通知等功能。
v3.3.0 新增了很多監(jiān)控新特性,支持在租戶級(jí)自定義監(jiān)控中導(dǎo)入 Grafana 模板,添加了容器進(jìn)程/線程指標(biāo),同時(shí)還優(yōu)化了磁盤使用率指標(biāo),支持顯示每個(gè)磁盤的使用情況。
現(xiàn)在用戶也可以分別設(shè)置審計(jì)、事件、日志及 Istio 日志信息的保留時(shí)間。
除此之外,還對(duì)已有的監(jiān)控、日志、告警等組件進(jìn)行了升級(jí):
- Alertmanager: v0.21.0 --> v0.23.0
- Grafana: 7.4.3 --> 8.3.3
- kube-state-metrics: v1.9.7 --> v2.3.0
- node-exporter: v0.18.1 --> v1.3.1
- Prometheus: v2.26.0 --> v2.34.0
- prometheus-operator: v0.43.2 --> v0.55.1
- kube-rbac-proxy: v0.8.0 --> v0.11.0
- configmap-reload: v0.3.0 --> v0.5.0
- thanos: v0.18.0 --> v0.25.2
- kube-events: v0.3.0 --> v0.4.0
- fluentbit-operator: v0.11.0 --> v0.13.0
- fluent-bit: v1.8.3 --> v1.8.11
運(yùn)維友好的存儲(chǔ)管理
持久化存儲(chǔ)是 K8s 系統(tǒng)中提供數(shù)據(jù)持久化的基礎(chǔ)組件,是實(shí)現(xiàn)有狀態(tài)服務(wù)的重要保證。KubeSphere 從 v3.2.0 開始便在 Console 界面新增了存儲(chǔ)管理功能,支持很多管理員級(jí)別的運(yùn)維操作。v3.3.0 進(jìn)一步優(yōu)化了存儲(chǔ)管理功能,管理員可以根據(jù)需要為存儲(chǔ)類型(StorageClass)設(shè)置 PVC 自動(dòng)擴(kuò)展策略,當(dāng)用戶的 PVC 剩余容量不足時(shí),就會(huì)按照預(yù)設(shè)的策略進(jìn)行擴(kuò)展。
為了進(jìn)一步控制存儲(chǔ)的操作權(quán)限,v3.3.0 支持了租戶級(jí)別的存儲(chǔ)權(quán)限管理,可以為存儲(chǔ)類型(StorageClass)設(shè)置授權(quán)規(guī)則,限制用戶只能在特定項(xiàng)目和企業(yè)空間使用存儲(chǔ)類。
此前 KubeSphere Console 界面不支持對(duì)卷快照內(nèi)容(VolumeSnapshotContent)和卷快照類型(VolumeSnapshotClass)進(jìn)行管理,這個(gè)功能在 KubeSphere 3.3.0 得以實(shí)現(xiàn),現(xiàn)在用戶可以在 Console 界面查看上述兩類資源,并對(duì)其進(jìn)行編輯和刪除操作。
服務(wù)暴露優(yōu)化
目前社區(qū)有大量用戶選擇在物理機(jī)安裝部署 K8s,并且還有大量客戶是在離線的數(shù)據(jù)中心或邊緣設(shè)備安裝和使用 K8s 或 K3s,導(dǎo)致用戶在私有環(huán)境對(duì)外暴露 LoadBalancer 服務(wù)比較困難。為了解決這個(gè)問題,KubeSphere 社區(qū)開源了 OpenELB[2],為私有化環(huán)境的用戶提供了易用的 EIP 與 IP Pool 管理能力。
v3.3.0 Console 界面默認(rèn)集成了對(duì) OpenELB的支持,即使是在非公有云環(huán)境的 K8s 集群下,也可以對(duì)外暴露 LoadBalancer 服務(wù)。
其他更新
- 支持通過 ClusterConfiguration 對(duì) Istio 進(jìn)行更豐富的配置;
- 新增 K8s 審計(jì)日志開啟提示;
- 支持應(yīng)用整個(gè)配置字典;
- 支持容器生命周期 hook 設(shè)置;
- 支持流量監(jiān)控統(tǒng)計(jì)時(shí)間配置;
- 優(yōu)化部分頁面文案描述;
- 優(yōu)化了服務(wù)拓?fù)鋱D詳情展示窗口優(yōu)化;
- 修復(fù)了刪除項(xiàng)目后項(xiàng)目網(wǎng)關(guān)遺留的問題;
- 優(yōu)化了 ClusterConfiguration 更新機(jī)制,無需重啟 ks-apiserver、ks-controller-manager;
- 由于政策要求暫時(shí)屏蔽了自動(dòng)生成的 nip.io 路由,下一個(gè)版本中將會(huì)提供后臺(tái)開關(guān)。