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