Cloudpods 是一个开源的 Golang 实现的云原生的多云和混合云融合平台。Cloudpods 不仅可以管理本地的虚拟机和物理机资源,还可以管理其他公有云和私有云平台的资源。
Cloudpods 由北京云联壹云技术有限公司主导开发,并于 2019 年 9 月于 Github 开源。Cloudpods 采用核心开源模式,其商业版本云联壹云企业版(YunionCloud)自 2017 年开始研发,已经服务了上百家企业客户。
感谢 2022 年开源之夏的三位同学为 Cloudpods 3.10 增加了如下功能特性:
PROXMOX 纳管支持。PROXMOX 是一款广泛使用的开源虚拟化方案,社区一直都在呼唤对 PROXMOX 的纳管支持。IxaKylin(Github ID)同学为Cloudpods 增加了对PVE的纳管支持。
纳管 1.20 以上高版本的 k8s 集群。k8s 一直在飞速发展,从 1.20 开始 API 和之前版本无法兼容。CoderLee-Y(Github ID)同学为 Cloudpods 支持了 1.20 以上高版本 k8s 的纳管能力。
将 dns 记录导出为 bind 的 zone 格式文件。Bind 的 zone 文件是 DNS 记录的事实标准文件格式,将纳管的 DNS 记录导出为 zone 文件格式,进一步丰富了云管 DNS 纳管的功能特性。ykdh(Github ID)同学为 Cloudpods 实现了导出 DNS 记录的 zone 文件格式的功能。
3.10 之前一直存在热拔插或热扩容的虚拟机无法热迁移的问题,这是因为虚拟机的设备在运行态进行了更改,导致迁移的目标机虚拟设备配置无法跟待迁移虚拟机完全一致。为了解决这个问题,我们在 3.10 改写了 QEMU 虚拟机设备管理的代码,支持基于 QEMU 的 QOM 设备树重建 QEMU 虚拟机的外设配置,最终实现了对热扩容或热拔插设备后的虚拟机也能正常热迁移。同时也根据客户和社区反馈,迭代改进了宕机自动迁移,主备机,不停机更换磁盘存储,VMWare 虚拟机迁移KVM等高可用高级特性。另外还支持了 SR-IOV 网卡,默认启用大页内存,设置磁盘启动顺序等新特性功能。使得虚拟化功能特性更加丰富,现代和实用。
3.10 开始,负载均衡开始支持 VPC 网络,但由于这个变化,lbagent 需要依赖部署了 openvswitch 的内核,以及相关 ovn 组件和配置,原来通过ansible部署的方式不再适用(因为需要替换内核重启主机等)。因此,从3.10开始,lbagent 的部署改为采用 ocboot 部署方式。
3.10 开始将云管底层对接云平台的代码抽离出来,放入一个单独的仓库,命名为:cloudmux。至此,Cloudpods项目代码由三个主要仓库构成:cloudmux, cloudpods和kubecomps。cloudmux 定位为一个 in-process 的多云适配 golang 库,支持了 VMware,OpenStack,Proxmox VE 等主流私有云,阿里云,腾讯云,华为云,天翼云,AWS,Azure,GCP 等主流公有云的主要云产品。Cloudpods 基于 cloudmux 实现多云的资源适配,构建一个多租户自服务的云平台,只是这个云平台底层的云资源可以包含其他云平台的资源,对外提供一套统一的 API。Kubcomps 则基于 Cloudpods 的统一API实现对部署在多云上的 k8s 集群的管理。
Cloudpods 一大特点是部署于 kubernetes 之上,整个部署过程需要先部署一套独立部署的 k8s,再部署平台。社区不断有人反馈比较复杂冗长,容易出错,我们也反思是否可以有更轻量的部署方式。我们认为之所以采用独立部署 k8s 的方式是因为内置私有云的功能对底层有依赖,需要对平台有独占性,因此需要用 ocboot 部署一套独立的 Kubernets,并且安装依赖的内核和系统软件rpm。但是如果用户仅使用云管的功能,则对底层的 kubernets 平台和操作系统都没有太多依赖,完全可以作为一个 Application 部署在 K8s 中,和其他应用共存。因此,我们首先提供了基于 Helm 部署 Cloudpods 云管功能的方式,并且已经被社区使用。但这种方式要求用户必须先有一套 k8s 集群。随着 3.10 的推出,我们新增一种基于 Docker compose 的云管部署方式,用户只需要下载 docker compose 的 yaml 文件,花十多分钟下载镜像后就能快速拉起一个单机版的Cloudpods 云管服务。相信这能够给使用用户带来更加轻量便捷的部署体验。
除了以上更新,3.10 版本在多云管理方便方面继续开疆拓土,本次新对接华为私有云 HCS、浪潮超融合平台、华三 CloudOS 平台及 Proxmox VE平台,在资源类型同步扩展,新支持阿里表格存储资源。同时多云对资源项目归属持续迭代,支持基于资源或云上项目标签动态归属资源项目,全面满足不同企业对资源分类的个性化需求。
客户需要每周/月统计不同资源的使用情况报表,如各虚拟机的 CPU/内存/存储配置及平均使用率,或者各项目的虚拟机总数,CPU/内存/存储的总量及平均使用情况,更高层级的各租户资源数量统计及平均使用率情况等需求,之前依靠人工,费时费力,每次做报表都耗费较长时间,而且结果也不一定准确,没有可对比情况。
云联壹云企业版 3.10 新增报表功能模块,可自定义报表字段,用户可根据自身需求定义报表模版。在配置报表生成频率后,定期生成报表。支持单独查看同一条数据所有时间段的报表信息,方便进行横向对接,支持整体报表导出,可本地进行数据分析。同时支持报表订阅,可定期将报表内容通过邮箱发送给指定人。报表生成更快、更全面、更准确。
客户在使用公有云时,有时候会通过云上的项目进行资源隔离,从而进行账单分割,但是在实际使用中发现有部分资源无法归属给具体项目,也无法通过标签标记。如短信服务,流量等费用。但是这些费用在分摊时无法准确归类,使用账单处理不太通畅。部分客户由于这些费用是属于公共使用资源,所以希望将这些费用进行均摊,另外有部分用户希望将这些费用分摊给部分项目,因为只有部分项目使用这些服务,无论何种场景,客户都希望可以在平台设置一个分摊策略,在账单同步后,可以按照账单分摊策略进行费用分割,最终生成一份与实际逻辑一致的账单。减少人工参与。
云联壹云企业版 3.10 新增账单分摊功能,用户可自定义设置分摊策略,可以选择要分摊的资源类型,支持均摊给所有项目或指定项目,在策略设置后,进行账单账单分摊任务后,即可按照策略对未归集项目下的账单进行二次归类,最终会重新生成一份新的账单。支持用户进行切换,可以查看分摊后的账单情况,也可以查看分摊前的账单,方便用户进行对比及账单核对。保证账单分摊准确、高效、便捷。
为了提高平台运行的稳定性,3.10 企业版增加了一键巡检的功能,管理员可以自助地生成平台巡检报告,清晰获取平台运行的健康状况。同时,为了保障平台数据安全,在安装后,会自动开启定期每日数据库备份,循环保留最近 10 天的备份,在系统数据丢失的情况下,可以使用这些备份恢复平台。