多云多K8S多环境体系建设

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1.
2. 多云多K8S多环境体系建设 主讲人-程亮 2021 / 05 / 22
3. 程亮 开课吧 首席架构 负责公司微服务建设重构,多环境治理搭建,公司中长期技术规划
4. 目录 K8S 多环境二期优化实战 2018 K8S 多环境 • 基于jenkins的传统发布 • 一套代码,支持多种环境 • 物理隔离的多环境 • 共享资源的多环境 收益总结 2020 2019 K8S 多环境发布一期方案 • 一期通过K8S发布,一键master • 新增服务模版,自动生成deployment • 降低服务器使用成本40% • 运维100%自动化 • 多云部署,高可用 2021
5. P-1 为什么要做多云多 K8S 多环境 ‣ 标准的dev test pre prod环境 ‣ 存在的问题
6. 标准的四套环境 DEV TEST PRE PROD
7. 标准的 CICD 流程 开课吧 CI/CD 架构 Jenkins pipeline 构建 Git LOCAL DEV Maven Docker kubectl Jenkins pull install deploy push get status rolling update 云厂商 K8S Developer GitLab Maven Repository(nexus) Registry
8. 多云多 K8S 多环境平台建设的初衷 多环境平台建设的初衷 多云多 K8S 多环境平台 1 提升资源使用率 K8S 集群 ( 多个 ) 01 02 2 多云冗余高可用 3 环境并行互不影响 管理后台 03 发布平台
9. P-2 线下多环境一期方案 ‣ 一键拉起master镜像新环境 ‣ 如何确保环境间资源互不影响 ‣ 一期方案存在的问题与挑战 ‣ 如何实现线下多环境
10. 一键拉起环境 原理 注意点 • 所有镜像自动生成 • 一键master镜像部署 1. 2. 3. 4. 注册中心 Mysql Redis ES 全链路微服务 自动数据同步 • 数据建设依赖于规划 • 数据如何切分
11. 一期多环境平台架构图 CDN / LB / WAF / NG K8S 集群 namespace1 namespace… namespaceN service1 … service1 service2 … service2 service3 … service3 … … … … 用户中心数据库 API网关数据库 应用中心数据库 基础服务数据库 基础服务数据库 … … jenkins
12. 多环境资源互不影响 微服务 • 全链路服务全部属 • 注册中心独立部署 流量隔离 • 多域名,泛域名解析匹配 数据 • 全量同步线上脱敏数据 • Mysql redis ES 全搭建 • 数据全部物理隔离 发布平台 • 按需分支发布 • 多环境完全并行
13. 一期方案的问题与挑战 1 多环境资源 “ 假 ” 隔离 Namespace 隔离,共享资源 2 挑战 3 数据依赖成本高 所有存储都是独立搭建的 集群规模大,运维工作量大 环境数目越多,资源成本,维护成本越高
14. P-3 二期多云多 K8S 多环境优化实战 ‣ 多环境访问严格隔离 ‣ 如何识别流量,智能路由 ‣ 如何借助多云保证有状态服务高可用 ‣ 如何做到激增流量时,全链路联动扩缩容 ‣ 如何跨云服务调用治理
15. 资源隔离,逻辑隔离,物理隔离 问题 1 逻辑隔离多环境共享一个 K8S (线下) 推荐做法 • 资源严格隔离:独占K8S,根据引入流量区分线上,线下 • 资源逻辑隔离:线下环境,通过智能路由,解决多环境 问题 2 多环境物理隔离(线下,线上)
16. 基于 Istio 的智能路由 Istio 层 Kubernetes 层 POD-1 Gateway pilot-agent VirtualService Container master DestinationRule Client POD-2 v5897 IstioIngressGateway Service pilot-agent Container v5897 v5897 … Chrome POD-n jenkins
17. 多云部署的目的 目的三 降低成本 • 跟不同的云厂商有更多的议价空间 目的二 高可用 • 多云多冗余,包括数据的同步冗余 目的一 多 K8S 集群严格隔离 • 区分不同云承接不同流量(单元架构)
18. 多云部署架构图 kaikeba1 Kaikeba2 云CDN,LB Axxx Hxxx Gateway Gateway 注册 Eureka 注册 Eureka 负载均衡 负载均衡 负载均衡 负载均衡 Ribbon Ribbon Ribbon Ribbon Redis ES Mysql
19. 无状态服务的扩缩容 Traffic serviceA serviceB Pod A1 Pod A2 Pod B1 RC/Deployment Pod B2 Pod B3 RC/Deployment Scale Horizontal Pod Autoscaler Scale metric 上报 Horizontal Pod Autoscaler 获取 metrics 获取 metrics CPU Mem已经支持指标自定 义metrics(用户自定义指标) CPU Mem已经支持指标自定 义metrics(用户自定义指标) 服务画像 监控中台 metric 上报
20. 基于有状态服务链路的扩缩容 Redis 后端管理平台 定时给 Redis 客户端下发配置 应用 1 应用 2 get key1 set key1 abc get key2 Redis 客户端( Jedis ) get namespace1:key1 Redis 客户端( Jedis ) get namespace2:key2 set namespace1:key1 abc Redis 虚机节点 Redis Cluster1 Master 实例 1 namespace1 key namespace1:key1 namespace n value(string)abc namespace2 key namespace2:key2 sadd key2 aa bb cc value(list)aa bb cc Redis Cluster2 Slave 实例 2 Sadd namespace2:key2 aa bb cc
21. 跨云跨 K8S 调用治理 nacos 2.0 同步 同步 kmos-eureka 同步 prod-nacos nacos-hk 注册服务 获取服务列表 获取服务列表 集群 A 注册服务 集群 B Feign Feign WEB 接口 API 接口 服务限流熔断 Hystrix API 接口服务 WEB 接口 负载均衡 Ribbon Business 业务层 Business 业务层
22. 多云多 K8S 多环境新挑战 1 3 多云发布一致性 多环境一套模板适配性 挑战 2 跨云数据同步保证 4 多 K8S 的监控
23. 扫码关注开课吧 官方网站 联系电话 www.kaikeba.com 400-996-0826
24.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-26 13:32
浙ICP备14020137号-1 $Map of visitor$