1、自动化混沌工程加速容器云平台稳定性验证与用户体验优化杨雪360技术中台 测试开发高级专家杨雪360 技术中台测试开发高级专家九年测试开发工作经验2019年加入360作为云业务测试接口人负责容器云、云计算管理平台等项目质量保证工作目录C O N T E N T S1.问题挑战:混沌风云起,稳中求进难2.破局之策:自动化混沌工程双集群实验环境例行实验自动化自动化观测方案自适应文本框架3.成果展示&未来展望问题挑战01混沌风云起,稳中求进难问题挑战:混沌风云起,稳中求进难360容器云:在kubernetes开源架构的基础上打造的容器云平台,以容器为核心,提供编排、存储、网络多方面,满足应用部署和运维
2、需求稳定性:安全生产重要基石云服务关键生命线故障:常态化放大效应混沌工程通过主动引入故障来充分验证系统和应用的脆弱性,提前发现并解决问题,力求防患于未然被动挨打主动出击问题挑战:混沌风云起,稳中求进难建立假设 架构梳理 故障库构建稳态 功能稳态 性能稳态扰动注入 场景爆炸 最小半径对比观测 稳态维持 故障恢复集群侧+运维侧+业务侧分析:门槛高成本高,一次性实验收益少-对兼容性、异常问题触发概率较少异常构造实验编排结果观测自动化混沌工程加速容器云平台稳定性验证加速容器云用户体验优化混沌实验方案痛苦:一次实施后就再也不想做了更别说推广给用户了思路:只有自动化、标准化、可重复、可推广,才能让混沌实验
3、发挥最大的价值破局之策02自动化混沌工程自动化混沌工程自动化混沌实验系统容器云服务稳定性观测用户服务稳定性观测实验环境1 双集群实验环境线上环境风险大环境维护较复杂稳定性需要比较2 例行实验自动化编排检查成本高随机性不够覆盖不全3自动化观测方案资源可用性观测难补充运维观测手段4 自适应文本框架缺少简单有效的观测手段自动化成本高1 双集群实验环境-部署方案实验环境(双集群)Base集群:托管master集群A(实验集群)集群B(对比集群)KubeClusterAKubeClusterBApiserverControllermanagerschedulercontrolplaneETCD系统组件1
4、系统组件n用户1工作负载1用户1工作负载n用户2工作负载1用户2工作负载n实验环境怎么准备?实验对象:容器云集群+用户工作负载实验环境:双集群对比隔离要求:不给线上引入风险 部署方案:K8S on K8Skubecluster以deployment方式运行包括api-server、controller-manager、scheduler在内的容器kubecluster以statefulset方式运行3副本etcd,作为k8s数据存储独享集群添加服务器作为worker节点独享集群系统组件,提供基础的网络、监控等基础服务用户工作负载做双集群pre发布1 双集群实验环境-部署流程 初始化集群 Kub
5、eCluster Controlplane+EtcdK8s Base Cluster 创建服务器 Storage、VIPHULK-openstack 初始化添加节点 Runtime KubeletcontainerVMs 系统组件安装 vpccni corednsingress 独享集群自动创建集群流程:自动化混沌工程自动化混沌实验系统容器云服务稳定性观测用户服务稳定性观测实验环境1 双集群实验环境线上环境风险大环境维护较复杂稳定性需要比较2 例行实验自动化编排检查成本高随机性不够覆盖不全3自动化观测方案资源可用性观测难补充运维观测手段4 自适应文本框架缺少简单有效的观测手段自动化成本高2 例
6、行实验自动化手动编排-事倍功半费时费力人为因素较多随机性不够单次执行覆盖不全场景类型实验对象自动编排-自主高效自动识别集群资源实验场景排列组合增加随机性增加问题触发概率自动例行实验过程如果自动化程度不高,过多依赖人为的故障编排,消耗过多的人力往往会导致混沌工程“从入门到放弃”的结果 节点状态恢复 实验清理环境清理 用户工作负载标准检查 用户混沌实验用户命名空间混沌实验 集群/组件版本升级 控制面实验 节点实验 系统组件实验容器云系统混沌实验 节点状态恢复 实验清理环境清理检查注入检查持续恢复检查持续2 例行实验自动化-方案持续时长范围控制:recover、sys、user、all定时触发配置: