在Kubernetes上部署高可用的Service Mesh监控
在 k8s 上部署高可用的 service mesh 监控 pctang@caicloud.io 唐鹏程 才云科技TOC Solving issues in a new way Monitoring your service mesh Old-school monitoringPrometheus + Kubernetes ● A time series based monitoring0 码力 | 35 页 | 2.98 MB | 5 月前3Service Mesh Meetup #3 深圳站
feature/new_branch 会合并到 develop; • 5. 部署负责人将 develop 分支代码部署到测试环境,然后再通知 QA 测试;(脚本或者人工)有什么问题? • 效率低 • 没有代码检查; • 没有自动化测试(包括单元测试); • 沟通成本高 • 开发需要通知负责人、测试、产品等;(而且是每次构建/部署 都需要) • 依赖多较好的开发流程(流程化、自动化) • 1 review ,批准合并之后,feature/new_branch 会合并到 develop; • 8. Merge 触发 Jenkins/Drone 自动构建; • 9. 构建成功就执行你定义的工作流:打包镜像,触发 deploy 以及其他后续的 Automation Testing 等流程; • 10 . Drone 通知工作流程情况给开发/或者交付 QA 测试;如何提升工程效率?我是作者名称2017 是一种文化:一切自动化,工具化,规范化;选择哪个 CI/CD 工具?Docker stats 查看 Docker 服务所占用的CPU和内存开销DroneDrone • 一款使用 Go 开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea 等)。 • 它的特点: • 一个 .drone.yml 搞定(简单) • 原生 Docker0 码力 | 45 页 | 18.62 MB | 5 月前3SOFAMesh的通用协议扩展
作为数据平面 • 打包 • 安装 • 部署 • 测试 • 支持主流的微服务框架 • SOFA • HSF • DUBBO • SPRING CLOUD • … • 控制平面创新的地方 • MESH OPERATOR • RPC SERVICE CONTROLLER • …SERVICE MESH 落地中的问题常见的 MESH 落地方案 在非 KUBERNETES 环境部署 ISTIO 把 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter for DUBBO • 开发 DUBBO 服务的 XDS 配置下发 • 开发 DUBBO 服务的路由规则 XDS0 码力 | 28 页 | 4.73 MB | 5 月前3Service Mesh结合容器云平台的思考和实践
基本的监控 • 快速部署 • 易于分配的存储 • 易于访问的外围(负载均衡) • 服务注册和发现 致富问题 • 认证和授权 • 智能路由 • 流量管理 • 服务降级 • … • 微服务拆分原则 • 业务API设计 • 数据一致性保证 • 可扩展性考虑 • …Kubernetes对于微服务的支撑 功能列表 详情 快速资源分配 容器编排和调度 服务部署&弹性伸缩 Deployment ilot功能解析Pilot官方架构Istio – EnvoyPilot-Agent的核心流程解读Pilot工作流程Pilot-Agent的部署形式 pilot-agent在pilot/cmd包下面,是个单独 的二进制。 pilot-agent跟envoy打包在同一个docker镜 像里,镜像由Dockerfile.proxy定义, Makefile(include了tools/istio- docker build成了 ${HUB}/proxy:${TAG}镜像,也就是 Kubernetes里跟应用放在同一个pod下的 sidecar。非Kubernetes情况下需要把 pilot-agent、envoy跟应用部署在一起,这 就有点“污染”应用的意思了。Pilot-Agent的功能介绍 在proxy镜像中,pilot-agent负责的工作包括: • 生成envoy的配置。 • 启动envoy。 • 监控0 码力 | 28 页 | 3.09 MB | 5 月前3蚂蚁金服Service Mesh渐进式迁移方案
杜绝一刀切k8s和Service Mesh落地方案演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即) 演进路线2分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 2 2 2 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service Mesh形态ü 可以理解为路线1的折衷版本 演进路线4分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Sidecar模式) 4 4 4 部署在K8s上 Service Mesh (Istio模式) 部署在 非k8s上 不是Service Mesh形态蚂蚁金服选择的演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM0 码力 | 40 页 | 11.13 MB | 5 月前3严选 ServiceMesh 实践
Lyft 联合开发,Go 语 言,与 K8s 一脉相承且深度融合 • K8s 提供了部署、升级和有限的运行流量管 理能力 • Istio 补齐了 K8s 在微服务治理上的短板 (限流、熔断、降级、分流等) • Istio 以 Sidecar 的形式运行在 Pod 中, 自动注入,自动接管流量,部署过程对业务 透明 • 提供了完整的 Service Mesh 解决方案 • 数据面:Envoy /0215/24 严选上云 Roadmap16/24 落地关键步骤 拥抱云原生 • 大势所趋 • 容器化是微服务的最佳载体 • 容器化是 Service Mesh 高 效落地的基石 部署平台 • Sidecar 注入,业务无感知 • 加速云化 建设服务治理平台 • 无缝衔接 VM 集群和容器集 群的服务治理能力 • 最大化发挥 Service Mesh 的 优势 灰度引流 eBPF/xDP(sockops),优化路径为 SVC <-> Envoy,延迟性能提升10-20%。 Envoy 部署方式 per-pod,跟社区方向一致,也是目前严选采用的部署方案。 • 方案2: 采用 DPDK+Fstack 用户态协议栈,优化路径为 Envoy <-> Envoy,延迟性能提升 0.8-1 倍。Envoy 部署方式为 per-node,功能和运维层面的限制还在评估当中。 • Sidecar 模式采用方案1进行优化,gateway0 码力 | 25 页 | 2.07 MB | 5 月前3陌陌Service Mesh架构实践
向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题 • 兼容问题 关键设计 关键问题16/24 数据平面部署方式 容器化运行方式 • sidecar模式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 • 研发人员:升级SDK版本 研发人员:升级SDK版本 • SRE:发布系统配置发布项 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg / recvmsg接口发送FD • 步骤:listener、存量连接、存量数据 Java实现 • 借助JNI与Netty Java实现FD迁移18/240 码力 | 25 页 | 1.25 MB | 5 月前3Service Mesh 微服务架构设计
微服务架构由一组小型的、独立自治的服务组成, 并且实现了业务中单个的完整业务功能。 • 服务和服务之间是独立的、低耦合的; • 每个服务都尽量小,小到一个小团队能够很好的维护它; • 服务可独立部署,每次部署不会影响其他服务; • 每个服务都各自负责自己的数据和状态的存储,独立数据库; • 服务和服务之间通过设计良好的API接口通信,不暴露具体的实 现细节; • 各服务不需要统一技术栈,不需 络代理,它们与应用程序一起部署,但 对应用程序透明。Service Mesh的实现原理 Spring Cloud的类库模式 Service Mesh的Sidecar模式Service Mesh:Istio架构Service Mesh:Linkerd架构Service Mesh: OCTO-Mesh架构为了解决单体的复杂度问题,我们引入微服务架构 为了解决微服务架构下大量应用部署的问题,我们引入容器0 码力 | 36 页 | 26.53 MB | 5 月前3Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展
服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service Mesh?- by Istio 服务发现 负载均衡 流量控制 ... 黑白名单 限流 ... 身份认证 通信加密 权限控制 ... 调用追踪 指标收集 Service Mesh是一个主要针对七层的网络解决方案,解决的是服务间的连通问题Service Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Server 管控规则 灰度发布 网格增强组件 原生组件 APP: Traffic Management APP ...产品化增强-服务注册发现 出于历史原因,我们使用了Kubernetes来部署服务,但并未使用Kubernetes内置的 服务发现功能。 Process Service-A Service-B Service-C Coarse grained Service0 码力 | 27 页 | 11.99 MB | 5 月前3阿里巴巴核心应用洛地 Service Mesh 的挑战与机过
发布了 1.4,迭代迅速 •国内 Service Mesh 相关书籍出版三本以上 •各大厂积极部署推进,蚂蚁金服影响力最大 •阿里巴巴实现对核心应用于双十一上验证 •云计算平台推出商业产品,但仍未普适 行业现状行业态度 普遍看好,仍存疑惑。 1. Service Mesh 增加成本调用及部署成本,高于所获得 的收益,价值难以兑现。 2. 针对服务化架构并未带来新的突破,将已有功能换个0 码力 | 22 页 | 6.61 MB | 5 月前3
共 20 条
- 1
- 2