美文网首页个人学习
Service Mesh - 了解Istio

Service Mesh - 了解Istio

作者: 端碗吹水 | 来源:发表于2020-12-22 10:29 被阅读0次

    王者的诞生:为什么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

    相关文章

      网友评论

        本文标题:Service Mesh - 了解Istio

        本文链接:https://www.haomeiwen.com/subject/tcnjnktx.html