私有云平台的建设和公司在不同阶段的需求是息息相关的,瓜子云平台从 2017 年启动项目,到目前承载了公司上千个应用服务,每月服务发布次数达上万次。在公司业务爆发性增长的背景下,云平台团队从 0 到 1 的完成了平台搭建,初步实现了平台产品化,也总结出了一些云平台建设的实践和经验。
这篇文章和大家分享下瓜子云平台的一些实践经验。瓜子是在 2017 年年中启动云平台项目的,当时有如下背景:
技术栈多样化,PHP、Java、Go、Python 都有使用,但只有 PHP 建立了相对统一的部署流程
业务迭代速度快,人员扩张速度快,再加上微服务化改造,项目数量激增,基于虚拟机的运维压力很大
测试环境没有统一管理,业务开发人员自行零散维护
基于此,我们的 0.x 版本,也是原型版本选择了如下的切入点:
在 CI/CD 层面,先定义出标准流程,但是并不涉及细节的规范化,便于用户学习,快速将现有流程套进去
同时支持 image 和 tar 包两种产出,为云上部署和虚拟机部署做好构建路径的兼容,在将来迁移时这部分可以做到几乎无缝
先支持测试环境的部署,在验证平台稳定性的同时,不断收集用户需求进行快速迭代
既然用了 Kubernetes 肯定就要解决跨节点的容器网络通信问题,因为我们是自建机房,没有公有云在网络层面的限制,所以没有考虑应用范围更广但是性能和可调试性较差的 VXLAN 方案。最开始选择的是 Macvlan + 自研 IPAM 的方式,之后转向了方案完成度更高的基于 BGP 协议的 Project Calico。
Calico 的优点如下:
基于 BGP 协议,转发平面依靠主机路由表,不涉及任何封包解包操作,性能非常接近原生网卡,并且方便抓包调试
组件结构简单,对 Kubernetes 支持很好
可以和 IDC 路由器通过 BGP 协议打通,直接对外广播容器 IP,让集群内外可以通过 IP 直连