云原生应用PaaS平台建设实践

2020-08-14 53浏览

  • 1. 蚂蚁金服数字课堂直播间 云原生应用PaaS平台建设实践 俞仁杰 SOFAStack 产品专家 www.aliyun.com/product/sofa www.sofastack.tech
  • 2. 云原生是业务快速变化背景下的必然技术趋势 从疑惑到成熟:云计算领域技术趋于成熟,市场空间、社区关注度提高 从稳态到敏态:业务亟待敏捷变革,需求趋于多样性,业务发展急需技术支撑 • • “云机房”Cloud-Based 外包托管机房 传统应用虚拟化 应用无状态化 运维自动化 服务规模化 • • “云就绪”Cloud-Ready 分布式去中心化部署 运维管控统一托管在PaaS层 容器化 微服务化 无服务器化 架构敏捷和运维精益的极致 开发测试运维体系融合 业务应用 业务应用 业务应用 • • “云原生” Cloud-Native 基础架构能力抽象&标准化 关注重心上移 中间件 中间件 & 平台服务PaaS 中间件 & 平台服务PaaS/CaaS 基础设施服务 IaaS 基础设施服务 IaaS 基础设施 IaaS 底层硬件 底层硬件 底层硬件 关注重心上移
  • 3. 云原生容器技术的所带来的 是一种应用交付模式的变革
  • 4. 所以今天关于云原生落地实践的分享将包括 • • • • • • • • Docker/K8S发展简史 DevOps CI/CD流程设计 容器网络规划方案 Dockerfile最佳实践 分布式存储对接 RBAC权限管控 日志监控对接优化 …
  • 5. 所以今天关于云原生落地实践的分享将包括 • • • • • • • • Docker/K8S发展简史 DevOps CI/CD流程设计 容器网络规划方案 Dockerfile最佳实践 分布式存储对接 RBAC权限管控 日志监控对接优化 … 吗?
  • 6. 一个Kubernetes平台 应用PaaS平台 K8S及其生态已经成为了各组件选型的事实标准 但还不够
  • 7. 金融场景需要“稳妥创新”: 生产环境落地云原生需要着重考虑哪些挑战? •成本:业务采用了云原生架构能否节省资源,提升工程效率? 风险:发现问题后如何做到快速止损,甚至线上零故障? 演进:能否和现有业务能无缝集成,如何做平滑升级? … 容灾:如何做到业务跨机房地域多活的高可用容灾能力? 安全:采用了云原生平台能否保证和现有架构一致的安全性? 规模:云原生能否支撑大规模分布式系统的架构?
  • 8. 本次分享核心内容:K8S体系下的应用变更与发布管控 风险:发现问题后如何做到快速止损,甚至线上零故障? • 需求背景:变更“三板斧” • Kubernetes 原生发布能力:Deployment / ReplicaSet • 具备高阶发布策略的关键CRD扩展:CAFEDeployment • Live Demo • 更多能力介绍与发展规划
  • 9. 需求背景:变更“三板斧” 技术风险保障基本要求 产品实现思路 可灰度: 分组灰度发布: • 应用发布进程可控,允许灰度、分组和精细化验证 • 感知底层拓扑,按机房/部署单元进行发布 • 分批次发布、暂停、验证 可应急: • 随时暂停、回滚,任何变更有据可查 • 跨可用区部署,保证双活和故障切换 可监控: • 接入监控告警体系,全程保证可观测性 无损发布: • 摘流保障和优雅下线 • 原地注入/平滑升级 过程追溯: • 多应用有序发布 • 发布单变更追溯
  • 10. Kubernetes 原生发布能力 • • • • Deployment 声明Pod模版和发布方式 ReplicaSet管理Pod数量 重建发布:先删干净,从头开始 滚动发布策略,根据步长,创建新Pod,销毁旧Pod
  • 11. CafeDeployment:感知底层拓扑 Cluster View Application View CafeDeployment CafeDeployment Cell B Cell A InPlaceSet Pod Pod Data Center A InPlaceSet Pod Pod Pod Pod Node Node Node datacenter=dc-a Data Center B Node Node Node datacenter=dc-b • 提供跨部署单元的发布管理功能,声明最终Pod按底层拓扑需求作发布 • 使Pod均匀发布到各机房,也可按需求指定 • 部署单元是逻辑概念,通常可与以下节点拓扑属性映射: 可用区(AZ) 同城独立物理机房(DataCenter) 具备一定风火水电隔离能力的机架(Rack) 其他指定属性 … kind: CafeDeployment spec: podSetType: InPlaceSet replicas: 10 strategy: upgradeType: Beta batchSize: 4 needWaitingForConfirm: true topology: autoReschedule: enable: true # 是否启动Pod自动重调度 initialDelaySeconds: 10 unitType: Cell # 部署单元类型:Cell,Zone,None unitReplicas: CellA: 4 # 固定某部署单元的Pod数目 values: # 部署单元 - CellA - CellB
  • 12. CafeDeployment:精细化分组发布扩容 关键特性: CafeDeployment • 精准分组,自定义拓扑 • 分组暂停,充分线上验证 • 按需回滚,及时降低变更风险 InPlaceSetController 以分三组为例,尽量让应用在每一组 都平均分布在每个部署单元 beta分组: 每个部署单元发布变更一个Pod,作 最小可用验证 Replica/Partition Allocator InPlaceSet A InPlaceSet B Pod A-1 Pod B-1 Pod A-2 Pod B-2 Beta Group 1 st Group Pod A-3 Pod B-3 Pod A-4 Pod B-4 2 nd Group Pod A-5 Pod B-5 Pod Upgrade Pod Provision …… kind: CafeDeployment spec: podSetType: InPlaceSet replicas: 10 strategy: upgradeType: Beta batchSize: 4 needWaitingForConfirm: true topology: - CellA - CellB 可用区B 可用区A 分组发布策略:
  • 13. CafeDeployment:优雅摘流无损发布 InPlaceSet Controller 变更过程中: • 由PaaS定义标准发布控制流程规范 • 配合外围网络组件进行流量切换&恢复检查 • 通过ReadinessGate 控制Pod上下线 Pod 添加Pod IP 添加finalizer 更新 删除Pod ip 注销 Pod IP 摘除 finalizer 等待3s Service LB Ingress DNS … Other protection Controllers 注册Pod IP 添加finalizer 发布完成 RPC Mesh Sidecar … 外部流量: LoadBalancer Controller 创建 ReadinessGate=true ReadinessGate=false 内部流量: Service/Endpoint Controller 注销 Pod IP 摘除 finalizer 处理剩余请求 执行升级 升级完成 ReadinessGate=true 添加Pod IP 发布完成 注册 Pod IP 添加finalizer 注册 Pod IP 添加finalizer
  • 14. Demo:一次典型的分组发布过程 • 阿里云 SOFAStack 控制台 应用服务配置 (复杂但强大的发布控制) 发布单管理 (追溯发布过程) • CLI Console (略微硬核) kubectl get pod -o custom-columns (监听Pod元数据信息而已) kubectl get cafedeployment (查看前面介绍的cafed) kubectl edit cafedeployment(分组暂停 – 确认 – 继续发布)
  • 15. 开源版本介绍:OpenKruise - UnitedDeployment • Kruise 项目源自于阿里巴巴经济体应用过去多年的大规模应用部署、 发布与管理的最佳实践 • 解决 Kubernetes之上应用的自动化,包括,部署,升级,弹性扩缩 容,Qos调节,健康检查,迁移修复等等 https://github.com/openkruise/kruise • 一套增强版controller组件用于应用的部署和级和运维: Advanced StatefulSet Broadcast Job SidecarSet CloneSet UnitedDeployment • UnitedDeployment 核心贡献者吴珂来自SOFAStack团队,主导 CafeDeployment的设计和开发 • 正在努力减少商业版与社区版的差异,两者将趋于统一
  • 16. Release Pipeline:通过工作流引擎对K8S变更操作卡点和干预 Monitor 前置参数检查 故障/变更前置冲突规避 基于算法与规则匹配的后置业务检查 场景案例: 前置风险: 高峰期自动规避 后置风险: 变更后业务下跌 调度层工作异常导致实际变更失败 Start precheck App check Biz check Rules check … Conflict check Disaster check POD POD PODs pre changing POD POD PODs post 变更防控 变更推进
  • 17. 主流分布式云平台终将向云原生架构演进 经典运维体系 基于虚拟机的 微服务应用 存量应用与 新架构混合部署 规模化的 容器部署 云原生 应用架构
  • 18. 实践参考:网商银行容器应用交付演进路线 经典运维体系 2014-2017 流水线交付物 应用程序包 经典PaaS 运维平台 虚拟机实例 技术栈脚本 / 运维管道 PaaS产品 • 上层交付运维体系保持不变 过渡期 • 应用与基础资源池解耦 2018 • 基础设施迈向K8S容器调度平台 云原生架构 2019-2020 应用程序包 容器 镜像 经典 运维体系 + 云原生 基础设施 业务应用 经典PaaS 运维平台 Kubernetes 容器引擎 AKE Docker VM 技术栈镜像 虚拟机实例 技术栈脚本 / 运维管道 VM … Docker VM 技术栈镜像 容器 Pod … 弹性基础设施 虚拟化IaaS 物理机 云原生 运维体系 + 云原生 基础设施 • 云原生敏捷应用交付 • 极致弹性充分利用计算资源 • 拥抱生态享受技术红利 代码 函数 应用 程序包 Kubernetes 容器运维平台 容器组Pod 容器组Pod 应用镜像 MOSN xflush 应用镜像 MOSN xflush 单元化联邦集群管控 Service Mesh Serverless 安全容器运行时 物理机 / 虚拟机
  • 19. 双模PaaS:满足 PaaS 层平滑演进需求 传统兼容 应用 应用交付 Deliverable 双模PaaS Application platform 弹性计算 Elastic Compute 基础设施 Infrastructure 统一集群管理 函数 前沿创新业务 原型实验系统 面向应用的交互模式 (双模交付) 应用包Buildpack 创新效率 Java Functions (SOFA Ark Modules) 互联网应用 敏捷响应市场 容器镜像 Image 统一元数据 金融核心系统 传统架构资产 统一联邦发布能力 Python Snippets 统一监控能力 Nodejs Functions 统一运维能力 安全容器 Secure Container 虚拟机 Virtual Machine 弹性机房(计算、存储、网络)
  • 20. SOFAStack 云原生单元化异地多活弹性架构 CDN & Global DNS 负载均衡 负载均衡 RZ00 UID: 00-15, 20-49 RZ01 UID: 50-65, 70-99 公共云/行业云 专有云 负载均衡 数据平面 RZ00A A RZ00B B 中间件 安全容器 运行时 CZ00A A RZ01A B 中间件 A B RZ01B 中间件 CZ00 C1 CZ00B RZone A GZ00B GZ00 RZ82B A CZ90A CZone B 中间件 C1 中间件 CZ90 C2 G1 中间件 中间件 G2 B 中间件 C2 G1 G2 GZone Federated ApiServer with Operators (跨集群资源管理,灰度/蓝绿发布,流量调拨,容灾切换/恢复,弹性建站/下站 …) 管控平面 Kubernetes Apiserver + SOFA CAFE Extensions Kubernetes Apiserver + SOFA CAFE Extensions 基础设施 统一代码管理 统一研发流程 Kubernetes Apiserver + SOFA CAFE Extensions 专线通道 Bare Metal 统一研发效能与技术风险 RZ82A 中间件 中间件 C2 集群联邦 管控 B C1 中间件 GZ00A A RZ90 EUID: 16-19, 66-69 统一变更管控 统一监控分析 统一系统自愈 基础设施 统一应用巡检 …
  • 21. Cloud Application Fabric Engine 云应用引擎 SOFAStack CAFE SOFAStack CAFE 产品层 应用发布管控 经典应用服务 Serverless 应用服务 容器应用服务 研发效能 流水线对接 环境资源管理 Pod伸缩管理 容器镜像管理 容 器 层 业务实时监控 容灾服务 流程编排 权限认证 技术风险 平台对接 日志分析 OpenAPI 事件审计中心 安全容器 服务目录 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message) 弹性建站/下站 容器腾挪/迁移 容灾切换和恢复 基础发布运维 批次发布 单元化混合云 PaaS基础核心服务 应用管理 核心 流程 监控分析平台 自动化运维 Mesh流调拨和治理 应急预案管理 … 跨集群管理 单元化能力 原生资源管理 变更管控 接入层流量调拨 应用层流量调拨 跨集群资源管理 跨集群状态 分发/汇聚 集群伸缩管理 配额管理 数据层流量调拨 压测/灰度 流量管理 跨集群发布策略 跨集群网络 运维原子操作 精细化调度 单元化 元数据管理 弹性流量管理 多集群管理 跨集群镜像管理 K8S API Server 容器运行时 (Docker/Pouch/安全容器) CNI Plugins (VLAN/VXLAN/VPC Router/ENI) CAFE API Server Aggregation Layer CSI Plugins (NAS/OSS/Cloud Disk/Ceph) 网络接入 (SLB/ALB)
  • 22. 阿里云 SOFAStack 金融分布式架构 已商业化发布 分布式金融核心套件 SOFAStack™(Scalable Open Financial Architecture Stack) 是构建金融级云原生架构的应用平台,提供“端到端”金融级能力 分布式平台 敏捷研发 分布式组件 研发效能 DevOps 消息队列 分布式事务 LinkE MQ DTX 任务调度 API 网关 TS GW 项目协作 代码托管 持续交付 容灾保障 数据 数据同步服务 中间件 DSS 分布式 数据库 数据访问代理 高阶运维保障 SRE DBP CAFE + TraaS 分布式关系型数据库 OceanBase 微服务核心 微服务 中间件 微服务平台 服务网格 MS CloudMesh 监控 高可用应急 HA 容灾服务 Recovery 资金安全监控 CLRISK 流程编排 StepFlow 全链路压测 LOAD 单元化混合云 LHC 分布式链路跟踪 DST 测试平台 应用PaaS CAFE 经典应用 容器应用 无服务器应用 CAS AKS SAS Kubernetes 核心引擎 业务实时监控 RMS https://www.aliyun.com/product/sofa https://sofa.console.aliyun.com
  • 23. 回顾与展望:打造具备技术风险保障能力的金融级PaaS 风险:发现问题后如何做到快速止损,甚至线上零故障? 应用变更与发布管控:“三板斧”、”发布策略”、“无损发布” Cloud Application Fabric Engine 演进:能否和现有业务能无缝集成,如何做平滑升级? 经典到云原生的过渡能力 容灾:如何做到业务跨机房地域多活的高可用容灾能力? 联邦管控、双活容灾方案与单元化异地多活弹性架构
  • 24. THANKS!