深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统深入 Kubernetes 的“无人区” —— 蚂蚁金服双十一的调度系统 曹寅2/19 一、蚂蚁金服的Kubernetes现状 二、双十一Kubernetes实践 三、展望未来迎接挑战 目 录 contents 目录3/19 一、蚂蚁金服的Kubernetes现状 Part 1:4/19 发展历程与落地规模 Part 1:蚂蚁金服的Kubernetes现状 平台研发 灰度验证 灰度验证 云化落地 规模化落地 2018年下半年开始投 入 Kubernetes 及其配 套系统研发 2019年初于生产环境 开始灰度验证,对部分 应用做平台迁移 2019年4月完成云化环境 适配,蚂蚁金服云上基础 设施全部采用 Kubernetes 支撑618 2019年7月到双十一前完成 全站 Kubernetes 落地,超过 90% 的资源通过 Kubernetes 分配,核心链路100%落地支撑0 码力 | 19 页 | 2.18 MB | 6 月前3
Service Mesh 在蚂蚁金服生产级安全实践的方式来管理,使用时通过 secret mount 以 Volume 形式挂载。 存在以下三个问题: Secret 管理方式与现有密钥管理系统有冲突,需要密钥管理系统强依赖 Kubernetes Secret 以明文形式挂载在容器的文件系统中,存在安全隐患 Secret 更新时,Sidecar 需要通过热重启方式重新加载,成本高昂基于 Secret Discovery Service 路径配置下发,用户通过 Policy CRD 和 DestinationRule 来决策需要给哪些 Sidecar 下发 Sidecar 收到SDS Config 后,然后以 JWT 格式封装身份信息(service account)向Citadel Agent请求证书 Citadel Agent 会将Sidecar 的请求包装成CSR 请求Citadel ,Citadel 会先检查缓存中是否已有证书,如果不 require Envoy to restart.基于 Secret Discovery Service Sidecar 的证书管理方案 蚂蚁金服证书管理方案 基于 Citadel 对接内部密钥管理系统 使用 AppLocalToken 替换 Service Account 支持多种Sidecar 通过Citadel Agent 获取证书使用可信身份服务构建敏感数据下发通道 背景介绍0 码力 | 19 页 | 808.60 KB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展e Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Layer Look at Solution Layer 7+ Message OtherSystems Mobile DexMesh Ingress Pod Microservice Envoy (Telemetry, Policy check) 配置数据(服 务信息,路由 信息等) 定制Istio组件 应用微服务 业务请求 控制流 图例说明 Pilot Mixer APP: Canary Deployment K8s API Server 管控规则 重试,断路器 • 故障注入 • 分布式调用跟踪 • Metrics 收集产品化增强-支持多网络平面 电信系统一般会有多个网络平面的,主要原因包括:避免不同功能的网络之间的 相互影响; 网络设计冗余,增强系统网络的健壮性; 为不同的网络提供不同的 SLA ;通过网络隔离提高安全性;通过叠加多个网络增加系统带宽 上图中的Kubernets集群使用了Knitter网络插件,部署了四个网络平面产品化增强-支持多网络平面0 码力 | 27 页 | 11.99 MB | 6 月前3
Service Mesh的实践分享,同 生共死 难度小。Sidecar故障可以将流量临时切到 remote proxy解决 升级难度 难度大。升级Sidecar需要业务容器一起发布,协调成本 高,而且全量升级sidecar对整个系统的动荡太大 难度小。切换流量到remote proxy可以实现用 户无感知无损升级。可以轻易的实现全网一月 一升级,快速的迭代、落地、反馈 动态扩容难度 单机使用,无须扩容 需预先根据宿主机的配置调整Proxy的资源以 实时上下游超时治理 • 实时上下游限流治理 • 智能路由 • 开源智能参数治理 • 现状 • 依赖用户手工配置参数(超时时间、限流) • 服务实例的差异导致配置相当复杂,容易 配置不合理 • 无法动态根据系统指标调整阈值 • 目标 • 用户无需拍脑袋设值,服务治理中心根据 历史指标进行推荐,对不合理的设置进行 建议,如 • 根据应用的历史延迟时间推荐超时设置 • 根据应用的历史流量数据推荐限流设置 配置下发 宿主机 用户 配置治理参数智能故障分析&告警 • 现状 • 告警信息分散,需要人工进行更多的数 据收集和整合才能定位问题,效率低下 • 告警信息偏原始,缺乏对告警信息进行 进一步推导得到具体的措施 • 目标 • 基于内部的智能根因分析大框架,通过 智能中心整合机器内、集群间、调用链 上的指标,对信息进行整合和推导,得 出具备操作性的建议 Proxy App Intelligent0 码力 | 30 页 | 4.80 MB | 6 月前3
Service Mesh结合容器云平台的思考和实践waitForExit会调用envoy.Run方法启动envoy进程,为此需要获取envoy二进制所在文件系统路径和命令行 参数两部分信息: 1. envoy二进制所在文件系统路径:evony.Run通过proxy.config.BinaryPath变量得知envoy二进制所在的文件 系统位置,proxy就是envoy对象,config就是pilot-agent的main方法在一开始初始化的proxyConfig对象。里面 为envoy生成好配置文件之后,pilot-agent还要负责envoy进程的监控与管理工作,包括: 1. 创建envoy对象,结构体包含proxyConfig(前面步骤中为envoy生成的配置信息),role.serviceNode(似乎 是agent唯一标识符),loglevel和pilotsan(service account name)。 2. 创建agent对象,包含前面创建的e0 码力 | 28 页 | 3.09 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?3:ServiceMesh灵魂拷问三:要不要支持虚拟机? 托管式实例组:效仿容器和k8s的方式来管理虚拟机 容器的硬件配置 实例模版的硬件配置 硬件 镜像文件的基础镜像 实例模版的操作系统配置 操作系统 镜像文件 自动启动脚本 创建应用 启动业务容器 按照实例模版启动虚拟机+应用 启动应用 k8s replicaset 通过实例模版设置实例数 管理实例副本(固定) k8s HPA或者serverless 标准化,生态共建 每一个问题和答案, 都会深刻影响未来几 年Servicemesh的 走向,请密切关注关注 ServiceMesher 微信公众号 获取社区最新信息 关注 金融级分布式架构 微信公众号 获取 SOFAStack 最新信息 ServiceMesher 社区是由一群拥有相同价值观和理念的志愿者们共同发起, 于 2018 年 4 月正式成立,致力于成为 Service Mesh 技术在中国的布道者和领航者。0 码力 | 43 页 | 2.90 MB | 6 月前3
Service Mesh 在『路口』的产品思考与实践产品的研发工作 开源配置中心 Apollo 主要作者 https://github.com/ctripcorp/apollo 毕业于复旦大学软件工程系 曾就职于携程、大众点评,负责中间件、后台系统等研发工作3/39 一、为什么需要 Service Mesh? 二、在当下『路口』的思考 三、蚂蚁金服的产品实践 四、展望未来 目 录 contents 目录4/39 每次升级都要重新发布应用 业务进程专注于业务逻辑 SDK 中的大部分功能, 拆解为独立进程, 以 Sidecar 的模式运行 将服务治理能力下沉到基础设施,实现独立演进,透明升级7/39 异构系统统一治理 Part 1: 为什么需要Service Mesh? 多语言、多协议 图片来源:https://www.redhat.com/en/topics/microservices/w Greenfield vs Brownfield Greenfield • 绿地,未开发过的土地 • 全新的项目/新系统 图片来源:https://faasandfurious.com/90 Brownfield • 棕地,已开发/污染过的土地 • 成熟的项目/遗留系统12/39 Part 2: 在当下『路口』的思考 • 大量的应用还跑在非 k8s 体系上(VM、独立的注册中心等)0 码力 | 40 页 | 15.86 MB | 6 月前3
阿里巴巴核心应用洛地 Service Mesh 的挑战与机过的收益,价值难以兑现。 2. 针对服务化架构并未带来新的突破,将已有功能换个 地方重复造轮子。阿里巴巴曾属于第二种原因有……重复运维,多语言支持困境 NodeJS Java C++ Golang 运维系统云原生时代快速赋能 Biz APP Non Ali Biz框架思维转向平面思维 Service Mesh Biz Non Ali Biz将中间件能力下层到基础层 业务 (Java/Go/C++ 表实现了一个全新的透明拦截组件#2 短时间内支持电商业务复杂的服务治理功能 •单元化?多环境?基于参数调用的路由? 1. RPC 使用的是 Groovy 脚本,Mesh 不具备。 2. RPC 并没有将参数作为元信息放置 在请求头。#3 短时间内支持电商业务复杂的服务治理功能 •扩展 VirtualService 和 DestinationRule#3 短时间内支持电商业务复杂的服务治理功能 •未来计划在0 码力 | 22 页 | 6.61 MB | 6 月前3
蚂蚁金服网络代理演进之路自定义Session Ticket编码格式 • 160 byte -> 76 byte • Session Ticket扩展 用于会话复用,加速握手过程 • Cached-info扩展 缓存证书等服务端信息,避免 再次握手时重复传输数据 • ECDHE-keyshare扩展 将TLS1.3草案中的1-RTT机制通 过扩展的方式提前应用 • ECC-signature扩展 使用高效ECDSA签名算法的同 应用层的零信任网络 § 随通信基础设施,通信场景的变 化而演进 § 金融级的通信安全基础设施关于未来 § 云原生,多云混合云时代,南北,东西流量的边界逐渐模糊 § 应用网络代理层部分能力固化,下沉至系统网络栈或者智能硬件设备 § 物理通信基础设施的升级势必带来应用网络层的变革 § Sidecar -> Proxyless -> Networkless谢谢!0 码力 | 46 页 | 19.93 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路中将report类的功能合 并到Sidecar • 国内的华为/新浪微博 等都选择在Sidecar中 实现功能,没有mixerü 支持跨集群 • 打通多个服务注册中心 • 支持多个注册中心同步信息 • 实现跨注册中心的服务调用 ü 支持异构 • 实现方式不同的注册中心 • 向Service Mesh的过渡 • 两个非Service Mesh的打通 ü 终极形态 • 跨集群 + 异构同时支持 Service-A 调用服务Service-b 8.8.8.1 8.8.8.2 8.8.8.3 服务注册中心 同步注册信息 Cluster-1 3.转发请求到edge sidecar, 标注Destination为Service-B 1. 通过注册信息交换同步到其他服务 注册中心,包括服务和Edge sidecar 2. 通过注册中心可以得知 Service-B在Cluster2,和相0 码力 | 37 页 | 7.99 MB | 6 月前3
共 26 条
- 1
- 2
- 3













