Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。Istio为希腊语,意思是”起航“使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络,而不需要对服务的代码进行任何修改。你只需要在部署环境中,例如Kubernetes的pod里注入一个特别的sidecar proxy来增加对istio的支持,用来截获微服务之间的网络流量。 —— 百度
    使用istio的进行微服务管理有如下特性:
    流量管理:控制服务间的流量和API调用流,使调用更可靠,增强不同环境下的网络鲁棒性。可观测性:了解服务之间的依赖关系和它们之间的性质和流量,提供快速识别定位问题的能力。
    策略实施:通过配置mesh而不是以改变代码的方式来控制服务之间的访问策略。
    服务识别和安全:提供在mesh里的服务可识别性和安全性保护。
    未来将支持多种平台,不论是kubernetes、Mesos、还是云。同时可以集成已有的ACL、日志、监控、配额、审计等。 —- 百度

    新一代服务网格:Linkerd、Envoy和Istio等
    服务网格
    是新一代的解决方案:让服务集中解决业务逻辑的问题,网络相关的功能则与业务逻辑剥离,并封装为独立的运行单元并作为服务的反向透明代理,从而不再与业务紧密关联。
    换句话说,微服务的业务程序独立运行,而网络功能则以独立的代理层工作于客户端与服务之间,专门为代理的服务提供熔断、限流、追踪、指标采集和服务发现等功能;而这些由各服务的专用代理层联合组成的服务通信网络则称之为服务网格(Service Mesh)
    代理服务称为 Sidecar

    数据平面与控制平面
    数据平面:触及系统中的每个数据包或请求,负责服务发现、健康检查、路由、负载均衡、身份验证/授权和可观测性等;
    控制平面:为网格中的所有正在运行的数据平面提供策略和配置,从而将所有数据平面联合构建为分布式系统,它不接触系统中的任何数据包或请求

    控制平面组件
    工作负载调度程序:借助于底层的基础设施(例如kubernetes)完成服务及其Sidecar运行位置的调度决策;
    服务发现:服务网格中的服务发现
    Sidecar代理配置API:各Sidecar代理以最终一致的方式从各种系统组件获取配置
    控制平面UI:管理人员的操作接口,用于配置全局级别的设置,例如部署、身份认证和授权、路由及负载均衡等

    服务网络的基本功能
    控制服务间通信:熔断、重试、超时、故障注入、负载均衡和故障转移等;
    服务发现:通过专用的服务总线发现服务端点;
    可观测:指标数据采集、监控、分布式日志记录和分布式追踪;
    安全性:TLS/SSL通信和密钥管理
    身份认证和授权检查:身份认证,以及基于黑白名单或RBAC的访问控制功能;
    部署:对容器技术的原生支持,例如Docker和Kubernetes等;
    服务间的通信协议:HTTP 1.1、HTTP 2.0 和gRPC等;
    健康状态检测:监测上游服务的健康状态;

    Istio架构:
    Pilot是流量管理的核心组件,在Istio中承担的主要职责是向Envoy proxy提供服务发现,以及为高级路由(如:A/B测试、金丝雀部署等)提供流量管理功能和异常控制(如:超时、重试、断路器等)。
    Citadel:用于密钥管理和证书管理,下发到Envoy等负责通信转发的组件。
    Galley在Istio中,承担配置的导入、处理和分发任务,为Istio提供了配置管理服务,提供在Kubernetes服务端验证Istio的CRD资源的合法性。
    Istio 1.5之前架构复杂,组件多,Istio 1.6之后简化了
    Istio运维建议:
    版本选择、备用环境准备、评估范围、配置生效、功能健壮性参考、入口流量选择。

    限流跟熔断都跟缓存机制有关

    Service Mesh Basics

    Envoy Basics

    基础配置及应用

    xDS协议及API动态配置

    层级化运行时

    服务韧性

    流量治理

    分布式跟踪

    网格安全

    Istio基础

    Istio实践