2022 年 6 月 27 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.3.0 正式发布!
CNCF 发布的 2021 年度调查报告指出,容器和 K8s 的事实地位已经趋于稳固,并慢慢退居“幕后”,类似于无处不在的 Linux,人们甚至都感觉不到它的存在。这要得益于众多致力于降低用户使用门槛的 K8s 管理平台,KubeSphere 便是这其中的佼佼者,它帮助用户屏蔽了底层 K8s 集群的复杂性和差异性,提供了可插拔的开放式架构,无缝对接第三方应用,极大地降低了企业用户的使用门槛。
2021 年 KubeSphere 先后推出了 [v3.1]和 [v3.2]两个大版本,带来了 “边缘计算”、“计量计费”、“GPU 资源调度管理” 等众多令人期待的功能,将 K8s 从云端扩展至边缘,并进一步增强了在云原生 AI 场景的使用体验。
今天,KubeSphere 3.3.0 带来了更多令人期待的功能,新增了基于 GitOps 的持续部署方案,进一步优化了 DevOps 的使用体验。同时还增强了 “多集群管理、多租户管理、可观测性、应用商店、微服务治理、边缘计算、存储” 等特性,更进一步完善交互设计,并全面提升了用户体验。
并且,v3.3.0 得到了来自青云科技之外的更多企业与用户的贡献和参与,无论是功能开发、功能测试、缺陷报告、需求建议、企业最佳实践,还是提供 Bug 修复、国际化翻译、文档贡献,这些来自开源社区的贡献都为 v3.3.0 的发布和推广提供了极大的帮助,我们将在文末予以特别致谢!
KubeSphere DevOps 从 3.3.0 开始,后端已支持独立部署,并提供了基于 GitOps 的持续部署(Continuous Deployment, CD)方案,引入 Argo CD 作为 CD 的后端,可以实时统计持续部署的状态。
以云原生 FaaS 项目 OpenFunction 为例,假设您的 KubeSphere 集群中已经部署了 nginx-ingress 和 knative-serving,可以通过 GitOps 持续部署 OpenFunction 的其他组件。
Jenkins 作为一款用户基数极大、生态丰富的 CI 引擎,我们会让 Jenkins 真正地“扮演”引擎的角色——退入幕后持续为大家提供稳定的流水线功能。之前 KubeSphere DevOps 通过轮询的方式来实现 Jenkins 流水线的数据同步,浪费了很多计算资源,本次新增了一个 Jenkins 插件,只要 Jenkins 端有相应的事件发生,就可以通过 Webhook 的形式立即将事件发送到 ks-devops。
KubeSphere DevOps 从 3.1.0 开始便内置了两个常用的流水线模板,帮助 DevOps 工程师提升 CI/CD 流水线的创建与运维效率。但内置的模板内嵌到了前端代码中,很难被改变。3.3.0 对流水线模板进行了重构,新增多款基于 CRD 的内置流水线模板,支持参数设置,用户也可以通过 CR 创建多个自定义的模板。
云原生技术的爆发倒逼应用的可移植性越来越高,最终会有越来越多的组织选择跨不同的云厂商或者在不同的基础设施上运行和管理多个 K8s 集群,可以说云原生的未来就是面向多集群的应用交付。
KubeSphere 为用户提供了统一的控制平面,可以将应用程序及其副本分发到位于公有云和本地环境的多个集群。KubeSphere 还拥有跨多个集群的丰富可观测性,包括集中监控、日志系统、事件和审计日志等。
之前 KubeSphere 的管理权限是针对所有集群分配的,无法针对单独的集群设置权限。从 v3.3.0 开始,KubeSphere 支持分别为每个集群设置集群成员和集群角色,提供了更细粒度的权限管控机制,进一步完善了 KubeSphere 的多租户系统。
KubeSphere 通过 CustomResourceDefinition(CRD)来定义集群,并将每个集群的信息保存在 CR 中。但 CR 只会保存在 host 集群中,member 集群中的应用无法获取自身所在集群的信息(比如集群名称),部分功能实现起来比较麻烦。比如告警管理系统发送通知时需要在通知中添加集群的标签,以标识该通知来自哪个集群,但无法自动获取,只能手动设置。
v3.3.0 解决了这个痛点,将集群名称添加到了 ConfigMap kubesphere-config
中,因为每个集群都会有这个 ConfigMap,所以集群中的应用可以通过这个 ConfigMap 获取到自身所在的集群名称。
除了以上这些改进之外,还优化了多集群的管理体验,比如可以直接在 Console 界面更新每个集群的 kubeconfig 内容。
而且当 member 集群 kubeconfig 中的证书即将过期时会即时提醒用户,用户收到提示后可以尽快通过上述方法更新集群的 kubeconfig 内容。
KubeSphere 通过与 KubeEdge 集成,解决了边缘节点纳管、边缘工作负载调度和边缘可观测性等难题,结合 KubeEdge 的边缘自治功能和 KubeSphere 的多云与多集群管理功能,可以实现云-边-端一体化管控。
v3.3.0 优化了边缘节点的管控能力,可以直接在 Console 界面登录边缘节点的终端,以便直接在边缘端进行操作,比如:
当然,Console 界面不仅可以登录边缘节点,也可以登录普通的节点。
我们还将 KubeEdge 从 v1.7.2 升级到了 v1.9.2,同时移除了 EdgeWatcher 组件,因为 KubeEdge 已经提供了类似的功能。
KubeSphere 提供了丰富的可视化功能,支持从基础设施到应用的多维度指标监控。此外,KubeSphere 还集成了许多常用的工具,包括多租户日志查询和收集、告警和通知等功能。
v3.3.0 新增了很多监控新特性,支持在租户级自定义监控中导入 Grafana 模板,添加了容器进程/线程指标,同时还优化了磁盘使用率指标,支持显示每个磁盘的使用情况。
现在用户也可以分别设置审计、事件、日志及 Istio 日志信息的保留时间。
除此之外,还对已有的监控、日志、告警等组件进行了升级:
持久化存储是 K8s 系统中提供数据持久化的基础组件,是实现有状态服务的重要保证。KubeSphere 从 v3.2.0 开始便在 Console 界面新增了存储管理功能,支持很多管理员级别的运维操作。v3.3.0 进一步优化了存储管理功能,管理员可以根据需要为存储类型(StorageClass)设置 PVC 自动扩展策略,当用户的 PVC 剩余容量不足时,就会按照预设的策略进行扩展。
为了进一步控制存储的操作权限,v3.3.0 支持了租户级别的存储权限管理,可以为存储类型(StorageClass)设置授权规则,限制用户只能在特定项目和企业空间使用存储类。
此前 KubeSphere Console 界面不支持对卷快照内容(VolumeSnapshotContent)和卷快照类型(VolumeSnapshotClass)进行管理,这个功能在 KubeSphere 3.3.0 得以实现,现在用户可以在 Console 界面查看上述两类资源,并对其进行编辑和删除操作。
目前社区有大量用户选择在物理机安装部署 K8s,并且还有大量客户是在离线的数据中心或边缘设备安装和使用 K8s 或 K3s,导致用户在私有环境对外暴露 LoadBalancer 服务比较困难。为了解决这个问题,KubeSphere 社区开源了 OpenELB,为私有化环境的用户提供了易用的 EIP 与 IP Pool 管理能力。
v3.3.0 Console 界面默认集成了对 OpenELB的支持,即使是在非公有云环境的 K8s 集群下,也可以对外暴露 LoadBalancer 服务。