一、建设背景
2017年到 2021 年,国家及地方发布了有关数字化转型以上云的相关政策,其中国家层面 14 项,省市层面 57 项。此类政策也持续引导着国内云计算产业的发展,意味着云计算需求端即将迎来爆发式增长。因此,联通内部也制定了相应的计划和策略。
面对如此爆发式的需求增长,能力端是否能够满足需求端的要求?
需求端,从联通各省份以及子公司的角度来看,他们更关注零门槛、开箱即用、低改造成本以及平滑迁移的能力。而以上需求正好与Serverless无服务器的概念相契合。因此,我们选择进行 Serverless产品体系的建设,以满足未来爆发式增长对云能力的需求。
在Serverless产品体系建设过程中,要解决以下几个问题。
首先,通过安全容器解决弹性容器实例在多租户体系下的安全问题。
其次,在裸金属服务器上构建相应的弹性容器实例 ECI,减少虚机上启动容器时一系列资源和性能的损耗,同时借用云平台多租的存储和网络进行租户间的隔离。
最后,解决成本问题。构建 Serverless、K8s或无服器应用引擎时,需要多款产品共用底层基础设施K8s 的算力,但是又不能互相干扰。因此,我们采用社区虚拟集群的解决方案,从 host 底层提供对应的逻辑虚拟集群,将逻辑的虚拟集群提供给平台产品层使用。
二、Serverless产品体系建设
联通的产品建设思路为在联通云统一的存储和网络基础设施之上,一体化地构建裸金属服务和资源 K8s 的管理体系。
联通将基础设施的 K8s 作为整体调度层,统一调度 OpenStack虚拟化组件以及云原生相关算力,称为双引擎。
完成资源和基础设施的构建后,在其之上可以构建出三种云原生的负载能力,runc、kubevirt的敏捷虚机以及基于 Kata 的 ECI 弹性容器实例。
Serverless体系的产品主要基于弹性容器实例ECI 进行构建,包括注重服务器无感知概念的无服务K8s 函数计算产品、面向用户应用快速上云层面的 Serverless应用引擎、 Cloud IDE 以及托管 K8s 和 vk 的组合产品扩展能力。
右下角为逻辑视图。我们在 host K8s 之上复用了IaaS 的网络以及存储能力,通过 ECI 构建对应的租户K8s 的master负载,包含调度器、vk 插件等。租户 K8s 通过 vk 插件构建虚拟node,并通过 vk 连接 ECI 相关的实例提供算力,使得租户集群拥有多个资源池的算力规模。
通过以上方式整合已有的 IaaS 服务,包括已有的网络和存储能力,即可与 ECS 拥有同样的性能规格以及异构计算的能力,可以快速启动、快速部署。
左上半部分是同步与启动机制展开后的流程示意图,通过各自租户集群的同步器,将对应的资源进行 guest 和 host 之间的双向同步,将多种必要资源同步到 host K8s 集群中,无需修改任何 K8s API 。由于 guest 的master 节点是完整的,因此其具有与上游 K8s 百分百兼容的能力。同时,租户集群也需通过一致性认证测试。
其中核心的业务逻辑即上图中复杂的同步器同步规则。当大部分 guest 资源都有对应的同步器或不同步的处理逻辑,意味着整个 Serverless集群的能力已经完善,可以投入使用。
三、Kata安全容器
进行Serverless产品体系建设时,我们参考了社区的方案,对Kata的能力进行了考量,并且针对 CPU、内存的损耗、网络性能等问题进行了优化,满足了当前联通 Serverless场景的使用需求。
而由于国产硬件厂商繁多,用户在选择、使用时,时常遇到困难。无服务器的能力对于用户无感知底层硬件,是否可以提供帮助?
Serverless结合国产化服务器和芯片,通过无服务器技术屏蔽底层硬件的差异,同时增强底层的调度机制和算法,是否可以达到在同等算力基础之上异构芯片之间的服务故障和自动迁移的能力?这非常值得期待。
关于龙蜥峰会云原生专场课件获取方式:
【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“龙蜥课件” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。
【视频回放】:视频回放可前往龙蜥官网https://openanolis.cn/video 查看。