消息资讯|UCloud优刻得Serverless容器实例Cube的研发实践之路( 二 )

消息资讯|UCloud优刻得Serverless容器实例Cube的研发实践之路
文章图片

2. 使用公有云资源
网络方面 , Cube容器的网络模型和云主机的基本相同 。 在将相关网络功能以cni插件的形式实现之后 , Cube容器就可以很好的接入到公有云vpc网络中 。
存储方面 , Cube容器目前支持了两种类型的存储:可以多点读写的网络文件系统nfs和仅单点读写的云硬盘udisk 。 在文件存储功能上 , Cube产品实现了在轻量级虚拟机中自动挂载nfs的功能 , 用户只需在配置文件中指定好挂载点和挂载参数 , 就能直接在容器中使用网络文件系统 , 并可以同时支持vpc网络内用户自建的nfs和UCloud公有云产品ufs 。 在块设备功能上 , 容器团队扩展了firecracker块设备的实现 。 通过添加对vhost-user协议的支持 , Cube轻量级虚拟机可以直接对接到spdk服务 , 从而实现了对高性能的rssd型云硬盘挂载和使用 。
3. 容器运行环境
为了减少额外资源消耗 , 容器团队在容器管理服务和容器运行时上做了大量优化工作 。
UCloud优刻得容器团队修改了cri-o管理容器组的架构 , 采用了单pod对应单shim的模型 。 通过一个shim管理一个pod内全部容器 , 可以显著的降低shim资源消耗 , 简化容器管理 。 对于轻量级虚拟机 , UCloud优刻得容器团队也对kernel/rootfs/init进程等做了充分地精简优化 , 只保留了最基本的功能 , 以加快启动速度 , 减小安全攻击面 , 降低资源消耗 。 另外 , 容器团队还在轻量级虚拟机中内置了infra container的实现 , Cube作为pod运行时可以不必挂载额外的infra容器 。
消息资讯|UCloud优刻得Serverless容器实例Cube的研发实践之路
文章图片

4. k8s改造
Kubernetes作为一个通用的容器调度框架 , 能够满足大部分容器管理的需求 。 但针对Cube特定的使用场景 , 容器团队仍需对k8s组件做一些改造 。 在控制面 , 容器团队采用了自定义的调度器 , 可以更好的满足多租户场景下任务优先级 , 调度速度 , 资源管理的需求 。 在宿主节点上 , 鉴于Cube容器运行时的特点 , UCloud优刻得容器团队精简了一些不需要kubelet实现的功能 , 例如在宿主上挂载configmap/volume目录 , 运行cni插件 , 收集特定目录日志等 , 增强了容器与宿主之间的隔离安全性 。
Cube未来展望
【消息资讯|UCloud优刻得Serverless容器实例Cube的研发实践之路】在完成了上述开发改造后 , Cube产品成功上线 , 并取得良好效果 。 后续Cube产品会继续沿着帮助用户提升效率、降低开销、简化维护、节约成本的思路持续迭代更新 。 在容器性能方面 , UCloud优刻得容器团队会继续优化轻量级虚拟机IO路径 , 减少虚拟化及管理组件的性能损耗 , 确保用户容器实例稳定高效运行 。 在服务管理方面 , Cube产品层面会推出多种的容器管理控制器 , 并实现Cube实例直接接入Kubernetes集群的能力 , 为用户提供多层次的资源调度方式 , 方便用户按实际需要管理维护 。


推荐阅读