Service Mesh - 了解Istio

王者的诞生:为什么Istio有如此高的呼声?

什么是 Istio?

  • 官方定义:它是一个完全开源的服务网格,作为透明的一层接入到现有的分布式应用中。它也是一个平台,可以与任何日志、遥测和策略系统进行集成。Istio 多样化的特性让你能够成功且高效地运行微服务架构,并提供保护、连接和监控微服务的统一方法。
  • Service Mesh 的新形态:增加控制平面

为什么 Istio 能 C 位出镜?

  • 出击及时(2017 年 5 月发布 0.1版本)
  • 三巨头光环加身
  • 第二代 Service Mesh
  • Envoy 的加入让 Istio 如虎添翼
  • 功能强大
  • 各大平台、厂商的支持

为什么使用 Istio?

  • 优势
    • 轻松构建服务网格
    • 应用代码无需更改
  • 功能强大


    image.png

Istio 的核心功能

image.png

Istio 的发布历程

image.png

Istio的自我救赎:为什么Istio发生了两次重大的架构变更?

架构变更路线

image.png

架构 1.0 版本

image.png
  • 数据平面
    • Envoy
  • 控制平面
    • Pilot
    • Citadel
    • Mixer

架构 1.1 版本

image.png
  • 1.1 的变化:
    • Adapter
    • Galley

Istio 的架构之殇

image.png
  • “完美”架构存在的问题:
    • 性能
    • 易用性

MVP理论(最小可用产品)告诉我们产品迭代的每个阶段都应是能够让用户可用的:


image.png

回归单体 - Istio 的自我救赎

  • 原有架构的复杂性
    • 维护性
    • 多组件分离的必要性?
    • 伸缩性
    • 安全性
  • “复杂是万恶之源,学会停止焦虑,爱上单体” —— Istio 开发团队

架构 1.5 版本

image.png
  • 重建控制平面
    • 整合为 istiod
    • 废弃 Mixer
  • 添加新特性
  • 性能提升
  • Bug 修复

核心功能之流量控制:Istio是如何实现流量控制功能的?

Istio 的流量控制能力

主要功能:

  • 路由、流量转移
  • 流量进出
  • 网络弹性能力
  • 测试相关

核心资源(CRD):

  • 虚拟服务(Virtual Service)
  • 目标规则(Destination Rule)
  • 网关(Gateway)
  • 服务入口(Service Entry)
  • Sidecar
image.png

虚拟服务(Virtual Service)

image.png
  • 将流量路由到给定目标地址
  • 请求地址与真实的工作负载解耦
  • 包含一组路由规则
  • 通常和目标规则(Destination Rule)成对出现
  • 丰富的路由匹配规则

目标规则(Destination Rule)

image.png
  • 定义虚拟服务路由目标地址的真实地址,即子集(subset)
  • 设置负载均衡的方式
    • 随机
    • 权重
    • 最少请求数

网关(Gateway)

image.png
  • 管理进出网格的流量
  • 处在网格边界

服务入口(Service Entry)

image.png
  • 把外部服务注册到网格中
  • 功能:
    • 为外部目标转发请求
    • 添加超时重试等策略
    • 扩展网格

Sidecar

image.png
  • 调整 Envoy 代理接管的端口和协议
  • 限制 Envoy 代理可访问的服务

网络弹性和测试

弹性能力:

  • 超时
  • 重试
  • 熔断

测试能力:

  • 故障注入
  • 流量镜像

服务的可观察性:如何理解服务可视化的重要性?

什么是可观察性?

  • 可观察性 ≠ 监控
  • 从开发者的角度探究系统的状态
  • 组成:指标、日志、追踪


    image.png

指标(Metrics)

  • 以聚合的方式监控和理解系统行为
  • Istio 中的指标分类:
    • 代理级别的指标(Proxy-level)
    • 服务级别的指标(Service-level)
    • 控制平面指标(Control plane)

代理级别的指标

  • 收集目标:Sidecar 代理
  • 资源粒度上的网格监控
  • 容许指定收集的代理(针对性的调试)


    image.png

服务级别的指标

  • 用于监控服务通信
  • 四个基本的服务监控需求:延迟、流量、错误、饱和
  • 默认指标导出到 Prometheus(可自定义和更改)
  • 可根据需求开启或关闭


    image.png

控制平面指标

  • 对自身组件行为的监控
  • 用于了解网格的健康情况


    image.png

访问日志(Access logs)

  • 通过应用产生的事件来了解系统
  • 包括了完整的元数据信息(目标、源)
  • 生成位置可选(本地、远端,如 filebeat)
  • 日志内容
    • 应用日志
    • Envoy 日志 $ kubectl logs -l app=demo -c istio-proxy

分布式追踪(Distributed tracing)

image.png

  • 通过追踪请求,了解服务的调用关系
  • 常用于调用链的问题排查、性能分析等
  • 支持多种追踪系统(Jeager、Zipkin、Datadog)

分布式追踪示例

image.png


保卫你的网格:Istio是如何设计安全架构的?

Istio 的安全架构

image.png

认证

image.png
  • 认证方式
  • 策略存储
  • 支持兼容模式

认证方式

  • 对等认证(Peer authentication)
    • 用于服务间身份认证
    • Mutual TLS(mTLS)
  • 请求认证(Request authentication)
    • 用于终端用户身份认证
    • JSON Web Token(JWT)

认证策略

image.png

  • 配置方式
  • 配置生效范围
    • 网格
    • 命名空间
    • 工作负载(服务)
  • 策略的更新

授权

image.png
  • 授权级别
  • 策略分发
  • 授权引擎
  • 无需显式启用

授权策略

image.png

  • 通过创建 AuthorizationPolicy 实现
  • 组成部分
    • 选择器(Selector)
    • 行为(Action)
    • 规则列表(Rules)
      • 来源(from)
      • 操作(to)
      • 匹配条件(when)

授权策略的设置

image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容