云原生Service Mesh istio 技术体系
2022-02-16 11:14:06 43 举报
AI智能生成
最通俗易懂的Service Mesh-知识体系-技能树
作者其他创作
大纲/内容
概述
前置理论基础 & 概念
康威定律
四大定律
几十年架构演进的指导思想之一
提高效率的方式之一就是参照组织架构划分子系统
微服务架构带来的网络复杂性
八个谬论
如何应对这种复杂性
分布式事务
实现API幂等性
网络配置解耦
配置中心
注册中心
全链路追踪
容错
灰度发布
监控
故障转移
流量发放
部署问题
pod运行正常但是service濒临崩溃,服务检测困难
。。。
应对复杂性方案带来的痛点
用复杂性,来解决复杂性的问题
控制成百上千个微服务的复杂性的挑战
网络问题不可控,业务类型复杂多变,提升了治理的维度,直至不可用
控制体系过于松散,没有统一的治理平面
治理环节可能侵入业务层
治理的复杂性,限制了微服务架构的规模
云原生
CNCF
CNCF全景图
CNCF的使命
容器化包装
通过中心编排系统的动态资源管理
面向微服务
容器化包装
通过中心编排系统的动态资源管理
面向微服务
容器化
Docker
容器设计模式
Kubernetes InitContainer
war与Server分离模式
分布式文件系统、Volume的共享
Sidecar模式
日志收集模式
Proxy容器模式
适配器容器模式
服务注册与发现模式
中心化Broker模式
Kubernetes
Pod
Kubernetes环境中应用程序最小单位,Istio中包含Service + Proxy
Kubernetes CRD(CustomResourceDefinition)
自定义资源的方式,Istio控制平面配置的基础
底层集合K8s Controller = Operator
搭配Istio适配器实现原生功能
Kubernetes Helm
Kubernetes Ingress
Kubernetes Egress
Kudu Proxy
Node级别代理
Kubernetes APIServer
Kubernetes Service & Endpoint
自动故障恢复机制
Etcd
Kubernetes环境下,Pilot实现服务注册发现的底层实现
Istio和Kubernetes的关系
Kubernetes可视为Istio的基座
Istio是Kubernetes的复用 & 叠加 & 增强
DevOps & GitOps
基于Flux CD的GitOps
两者的关系
GitOps的现实意义和实现前提
MVP理念
Service Mesh选型
数据平面
Envoy
Linkerd
控制层面
Istio
优势
Mesh构建便利,环境无关,快速扩展
应用代码无侵入,业务层与治理,遥测等扩展能力无耦合
资源组织方式统一
服务治理功能内聚度高,度量工具提供装配器,方便整合
真正的云原生底层框架,在Kubernetes基础至上叠加增强功能
劣势
框架本身的问题
服务粒度过细
需要更多的server,性价比低
网络开销大,服务器压力大
业务节点调用链变长,大量性能消耗在代理和Mixer上
版本兼容性问题(早期版本)
新技术,成熟度低,可能有bug
需要关注GitHub Issue
例子:istio dns proxy may cause pod/service ip conflicts
stio dns代理可能会导致pod/服务ip冲突
stio dns代理可能会导致pod/服务ip冲突
App container unable to connect to network before sidecar is fully running
在sidecar完全运行之前,应用程序容器无法连接到网络
在sidecar完全运行之前,应用程序容器无法连接到网络
最佳实践积累程度不够
原生配置使用文本方式,无可视化界面
istio版本迭代
架构优化
分拆
解耦,架构边界清晰
分布式部署,增加了复杂度 & 网络通信压力
回归单体
简化架构,提升网络性能
内部模块化,保持功能边界清晰,保持扩展性
提升安全性
与普通微服务对比
微服务通信的痛点
网络通信
在云服务使用ServiceMesh的意义
istio
架构
数据平面
Sidercar代理集合 by Envoy
Envoy代理接管的端口、协议
限制Envoy代理可访问的服务
控制平面
组件
Pilot
路由配置信息转换成Envoy配置,并广播分发至Sidecar
Galley
配置验证,提取处理,分发【1.1 & 1.5】
Mixer(only 1.0 & 1.1)
驱动Envoy check & report
监测数据手机 From Sidecar
限流 & 黑白名单
Adapter
插件适配器【only 1.1】
Citadel
管理TLS certs
架构模式
1.0 - 分布式
1.1 进一步分布式
1.5 单体模块化
原生功能
基础特性
业务代码无侵入
跨云、跨集群通信
跨平台计算
协议
流量控制
流量控制
路由、流量转移
灰度发布
蓝绿部署
AB测试
弹性
超时
重试
熔断/降级
调试
故障注入
流量镜像
安全
实现
通过istio控制平面实现,定义Kubernetes CRD,推送给data plane
分类
认证
对等认证(服务间)
实现
定义PeerAuthentication CRD
mTSL模式
DISABLE
STRICT
PERMISSIVE
UNSET
请求认证(终端用户)
JWT
授权
实现
定义AuthorizationPolicy CRD
可观察性
可观察性和监控的区别
内外之分
主动 or 被动
分类
指标(度量 -Metrics)
实现方式 - 通过聚合数据
集成Prometheus Server
分类
代理级别(Proxy-level)
网络请求相关的指标
服务级别(Service-level)
延迟、流量、错误、饱和
控制平面(Control plane)
分布式追踪
接入jeager等
Istio服务网格可视化
Kiali
集中式日志系统
EFK
ELK
策略
限流
黑白名单
交付
项目实践
本地环境 + Bookinfo
Dev自建机房 + 自行搭建 Kubernetes + Istio + Envoy
腾讯云容器服务-服务网络
阿里云服务网格 ASM
收藏
0 条评论
下一页