1、蚂蚁金服数字课堂直播间云原生应用PaaS平台建设实践俞仁杰SOFAStack 产品专家 IaaSIaaS底层硬件中间件&平台服务PaaSPaaS基础设施服务 IaaSIaaS底层硬件中间件&平台服务PaaS/CaaSPaaS/CaaS基础设施 IaaSIaaS底层硬件基础架构能力抽象&标准化关注重心上移关注重心上移从疑惑到成熟:云计算领域技术趋于成熟,市场空间、社区关注度提高从稳态到敏态:业务亟待敏捷变革,需求趋于多样性,业务发展急需技术支撑云原生是业务快速变化背景下的必然技术趋势云原生容器技术的所带来的是一种应用交付模式的变革所以今天关于云原生落地实践的分享将包括 Docker/K8S发展简
2、史 DevOps CI/CD流程设计 容器网络规划方案 Dockerfile最佳实践 分布式存储对接 RBAC权限管控 日志监控对接优化 所以今天关于云原生落地实践的分享将包括吗?Docker/K8S发展简史 DevOps CI/CD流程设计 容器网络规划方案 Dockerfile最佳实践 分布式存储对接 RBAC权限管控 日志监控对接优化 一个Kubernetes平台应用PaaS平台K8S及其生态已经成为了各组件选型的事实标准但还不够金融场景需要“稳妥创新”:生产环境落地云原生需要着重考虑哪些挑战?成本:业务采用了云原生架构能否节省资源,提升工程效率?风险:发现问题后如何做到快速止损,甚至线
3、上零故障?演进:能否和现有业务能无缝集成,如何做平滑升级?容灾:如何做到业务跨机房地域多活的高可用容灾能力?安全:采用了云原生平台能否保证和现有架构一致的安全性?规模:云原生能否支撑大规模分布式系统的架构?风险:发现问题后如何做到快速止损,甚至线上零故障?需求背景:变更“三板斧”Kubernetes 原生发布能力:Deployment/ReplicaSet 具备高阶发布策略的关键CRD扩展:CAFEDeployment Live Demo 更多能力介绍与发展规划本次分享核心内容:K8S体系下的应用变更与发布管控需求背景:变更“三板斧”技术风险保障基本要求技术风险保障基本要求可灰度:应用发布进程
4、可控,允许灰度、分组和精细化验证可应急:随时暂停、回滚,任何变更有据可查跨可用区部署,保证双活和故障切换可监控:接入监控告警体系,全程保证可观测性产品实现思路产品实现思路过程追溯:多应用有序发布发布单变更追溯分组灰度发布:感知底层拓扑,按机房/部署单元进行发布分批次发布、暂停、验证无损发布:摘流保障和优雅下线原地注入/平滑升级Kubernetes 原生发布能力 Deployment 声明Pod模版和发布方式 ReplicaSet管理Pod数量 重建发布:先删干净,从头开始 滚动发布策略,根据步长,创建新Pod,销毁旧PodCafeDeployment:感知底层拓扑CafeDeploymentC
5、luster ViewData Center AData Center BNodeNodeNodedatacenter=dc-aNodeNodeNodedatacenter=dc-bInPlaceSetInPlaceSetCafeDeploymentApplication ViewCell ACell BPodPodPodPodPodPod 提供跨部署单元的发布管理功能,声明最终Pod按底层拓扑需求作发布 使Pod均匀发布到各机房,也可按需求指定 部署单元是逻辑概念,通常可与以下节点拓扑属性映射:可用区(AZ)同城独立物理机房(DataCenter)具备一定风火水电隔离能力的机架(Rack)其
6、他指定属性kind:CafeDeploymentspec:podSetType:InPlaceSetreplicas:10strategy:upgradeType:BetabatchSize:4needWaitingForConfirm:truetopology:autoReschedule:enable:true#是否启动Pod自动重调度initialDelaySeconds:10 unitType:Cell#部署单元类型:Cell,Zone,None unitReplicas:CellA:4#固定某部署单元的Pod数目values:#部署单元-CellA-CellBkind:CafeDep
7、loymentspec:podSetType:InPlaceSetreplicas:10strategy:upgradeType:BetabatchSize:4needWaitingForConfirm:truetopology:-CellA-CellBReplica/Partition AllocatorPod A-1Pod B-1Pod A-2Pod B-2Pod A-3Pod B-3Pod A-4Pod B-4Pod A-5Pod B-5Beta Group1stGroup2ndGroupInPlaceSet AInPlaceSet BPod ProvisionCafeDeploymen
8、tInPlaceSetControllerPod Upgrade可用区可用区A可用区可用区BCafeDeployment:精细化分组发布扩容分组发布策略:以分三组为例,尽量让应用在每一组都平均分布在每个部署单元beta分组:每个部署单元发布变更一个Pod,作最小可用验证关键特性:精准分组,自定义拓扑 分组暂停,充分线上验证 按需回滚,及时降低变更风险CafeDeployment:优雅摘流无损发布变更过程中:由PaaS定义标准发布控制流程规范配合外围网络组件进行流量切换&恢复检查通过ReadinessGate 控制Pod上下线内部流量:RPCMesh Sidecar外部流量:Service LB
9、IngressDNSInPlaceSetControllerPodService/EndpointControllerLoadBalancerController创建更新等待3s执行升级ReadinessGate=true添加Pod IP注册Pod IP添加finalizerReadinessGate=false删除Pod ip注销 Pod IP摘除 finalizer处理剩余请求升级完成ReadinessGate=true添加Pod IP注册 Pod IP添加finalizerOther protectionControllers添加finalizer发布完成注销 Pod IP摘除 fina
10、lizer注册 Pod IP添加finalizer发布完成Demo:一次典型的分组发布过程 阿里云 SOFAStack 控制台应用服务配置(复杂但强大的发布控制)发布单管理(追溯发布过程)CLI Console(略微硬核)kubectl get pod-o custom-columns(监听Pod元数据信息而已)kubectl get cafedeployment(查看前面介绍的cafed)kubectl edit cafedeployment(分组暂停 确认 继续发布)开源版本介绍:OpenKruise-UnitedDeploymenthttps:/ Kruise 项目源自于阿里巴巴经济体应
11、用过去多年的大规模应用部署、发布与管理的最佳实践 解决 Kubernetes之上应用的自动化,包括,部署,升级,弹性扩缩容,Qos调节,健康检查,迁移修复等等 一套增强版controller组件用于应用的部署和级和运维:Advanced StatefulSetBroadcast JobSidecarSetCloneSetUnitedDeployment UnitedDeployment 核心贡献者吴珂来自SOFAStack团队,主导CafeDeployment的设计和开发 正在努力减少商业版与社区版的差异,两者将趋于统一ReleasePipeline:通过工作流引擎对K8S变更操作卡点和干预变
12、更推进变更防控PODPODPODPODPODsprechangingPODspostprecheckConflictcheckDisaster checkApp checkBiz checkRules checkStartMonitor基于算法与规则匹配的后置业务检查故障/变更前置冲突规避前置参数检查场景案例:前置风险:高峰期自动规避后置风险:变更后业务下跌调度层工作异常导致实际变更失败主流分布式云平台终将向云原生架构演进云原生应用架构规模化的容器部署存量应用与新架构混合部署基于虚拟机的微服务应用经典运维体系实践参考:网商银行容器应用交付演进路线应用程序包业务应用虚拟化IaaS经典PaaS 运
13、维平台Kubernetes 容器运维平台技术栈脚本/运维管道虚拟机实例应用程序包Docker VM技术栈镜像经典PaaS 运维平台技术栈脚本/运维管道虚拟机实例Docker VM技术栈镜像VM 物理机Kubernetes 容器引擎 AKE容器 Pod物理机/虚拟机流水线交付物PaaS产品弹性基础设施应用程序包代码函数过渡期2018云原生架构2019-2020容器镜像经典运维体系2014-2017安全容器运行时容器组Pod应用镜像MOSNxflush容器组Pod应用镜像MOSNxflush单元化联邦集群管控Service MeshServerless经典运维体系+云原生基础设施云原生运维体系+云
14、原生基础设施 上层交付运维体系保持不变 应用与基础资源池解耦 基础设施迈向K8S容器调度平台 云原生敏捷应用交付 极致弹性充分利用计算资源 拥抱生态享受技术红利弹性机房(计算、存储、网络)虚拟机 Virtual Machine安全容器 Secure Container弹性计算Elastic Compute双模PaaSApplication platform应用交付Deliverable统一元数据统一集群管理统一监控能力统一联邦发布能力统一运维能力传统兼容创新效率函数应用前沿创新业务原型实验系统互联网应用敏捷响应市场金融核心系统传统架构资产基础设施Infrastructure容器镜像 Image
15、应用包Buildpack面向应用的交互模式(双模交付)Java Functions(SOFA Ark Modules)NodejsFunctionsPython Snippets双模PaaS:满足PaaS 层平滑演进需求SOFAStack 云原生单元化异地多活弹性架构专线通道公共云/行业云专有云CDN&Global DNS统一研发效能与技术风险统一代码管理统一研发流程统一变更管控统一监控分析统一系统自愈统一应用巡检Bare MetalBare MetalKubernetes Apiserver+SOFA CAFE ExtensionsKubernetes Apiserver+SOFA CAFE
16、 ExtensionsFederated ApiServer with Operators(跨集群资源管理,灰度/蓝绿发布,流量调拨,容灾切换/恢复,弹性建站/下站)管控平面RZ00 UID:00-15,20-49RZ01 UID:50-65,70-99数据平面RZ00ARZ00BCZ00GZ00CZ00ACZ00BGZ00ARZ01ARZ01BGZ00B基础设施RZ90 EUID:16-19,66-69CZ90ARZ82ARZ82B基础设施CZ90Kubernetes Apiserver+SOFA CAFE Extensions负载均衡负载均衡RZoneGZone安全容器运行时集群联邦管控C
17、Zone中间件AB中间件ABC1中间件C2G1中间件G2中间件AB中间件ABC1中间件C2G1中间件G2中间件AB负载均衡C1中间件C2中间件ABSOFAStack CAFECAFE API Server Aggregation LayerK8S API Server基础发布运维跨集群资源管理核心流程容器运行时(Docker/Pouch/安全容器)CNI Plugins(VLAN/VXLAN/VPC Router/ENI)CSI Plugins(NAS/OSS/Cloud Disk/Ceph)网络接入(SLB/ALB)容器层跨集群管理单元化能力容器镜像管理批次发布原生资源管理Pod伸缩管理集群
18、伸缩管理变更管控配额管理运维原子操作精细化调度接入层流量调拨应用层流量调拨跨集群状态分发/汇聚数据层流量调拨压测/灰度流量管理单元化元数据管理弹性流量管理跨集群发布策略多集群管理跨集群网络跨集群镜像管理蓝绿发布灰度分组发布中间件变配(DRM/Scheduler/Message)Mesh流调拨和治理弹性建站/下站容器腾挪/迁移容灾切换和恢复应急预案管理容器应用服务经典应用服务流程编排日志分析业务实时监控事件审计中心Serverless应用服务容灾服务单元化混合云自动化运维应用发布管控PaaS基础核心服务应用管理环境资源管理服务目录安全容器权限认证OpenAPI研发效能流水线对接监控分析平台技术风
19、险平台对接SOFAStack CAFE 产品层Cloud Application Fabric Engine 云应用引擎分布式金融核心套件敏捷研发分布式平台容灾保障https:/ LinkE KubernetesKubernetes 核心引擎经典应用CASCAS容器应用AKSAKS无服务器应用SASSAS应用PaaSPaaSCAFECAFE微服务平台MSMS微服务中间件服务网格CloudMeshCloudMesh任务调度TSTS分布式组件测试平台API API 网关GWGW消息队列MQMQ分布式数据库分布式关系型数据库OceanBase数据访问代理DBPDBP数据中间件数据同步服务DSSDSS
20、分布式事务DTXDTX业务实时监控RMSRMS分布式链路跟踪DSTDST监控全链路压测LOADLOAD资金安全监控CLRISKCLRISK高可用应急HAHA高阶运维保障 SRESRECAFE+TraaSCAFE+TraaS容灾服务RecoveryRecovery单元化混合云LHCLHC流程编排StepFlowStepFlow微服务核心阿里云SOFAStack 金融分布式架构已商业化发布SOFAStack(Scalable Open Financial Architecture Stack)是构建金融级云原生架构的应用平台,提供“端到端”金融级能力回顾与展望:打造具备技术风险保障能力的金融级PaaS风险:发现问题后如何做到快速止损,甚至线上零故障?演进:能否和现有业务能无缝集成,如何做平滑升级?容灾:如何做到业务跨机房地域多活的高可用容灾能力?应用变更与发布管控:“三板斧”、”发布策略”、“无损发布”经典到云原生的过渡能力联邦管控、双活容灾方案与单元化异地多活弹性架构Cloud Application Fabric Engine THANKS!