Istio的官网地址:Istio / 概念一些概念,理解它们有助于您更好地了解 Istio 系统的不同部分及其使用的抽象。https://istio.io/latest/zh/docs/concepts/
动态配置路由请求
故障注入
版本发布(灰度与金丝雀)
TCP流量转移
请求超时
断路器
镜像流量
生产环境选用default 模式的内置配置文件。
Istio在逻辑上分为控制面和数据面:
控制面(istiod): 提供服务发现、配置和证书管理。Istiod 将控制流量行为的高级路由规则转换为 Envoy 特定的配置,并在运行时将其传播给 Sidecar。Istio 可以支持发现多种环境,如 Kubernetes 或 VM。
数据面(envoy): 一组部署为边车的智能代理 (Envoy)组成。这些代理调解和控制微服务之间的所有网络通信。他们还收集和报告所有网状流量的遥测数据。
Pilot:
包含服务注册(本身不提供服务注册,只是提供一个API接口)以及路由规则的下发。
Platform Adapter:注册中心平台适配器,主要是对接外部不同注册中心厂商。
Abstract model:对接外部不同的平台,从特定平台细节中解耦。
Envoy API:与pod里面的envoy代理进行通信,主要是发现服务发现以及控制流量规则信息给envoy。
Mixer:
责策略控制和遥测数据收集
Mixer在istio架构里面不是必须的。Mixer分为Policy和Telemetry两个子模块。
Policy用于向envoy提供准入策略控制,黑白名单限制,速率限制等相关策略;
Telemetry为envoy提供数据上报和日志搜集服务,用于监控告警以及日志查询。
Citadel:
场景:适用支付场景
Citadel在istio架构中也不是必须的。负责istio的认证授权机制,同时需要和其它组件一起配合,参与其中的组件有Pilot、Envoy、Mixer。它们四个在整个流程中的作用分别为:
citadel:用于负责密钥和证书的管理,在创建服务时会将密钥以及证书下发到对应的envoy代理中;
pilot:接收用户定义的安全策略并将其整理下发至服务旁的envoy代理中;
envoy:存储citadel下发的密钥和证书,保障服务之间的数据传输安全;.
mixer:负责核心功能为前置条件和遥测报告上报。
创建pod时候,citadel流程:
pod启动的时候,citadel会下发密钥和证书给envoy存储,便于后续服务安全通信;
pilot服务发现和策略规则会以envoy api的方式暴露给envoy容器;
envoy跟envoy传输是安全的;
mixer检查envoy请求并且收集envoy请求数据
Galley:
galley在控制面上向其他组件提供支持。galley作为负责配置管理的组件,并将这些配置信息提供给管理面的pilot和mixer服务使用,这样其他管理面组件只用和galley进行交互,从而与底层平台解耦。
Virtual services(虚拟服务)
虚拟服务让您配置如何在服务网格内将请求路由到服务,这基于 Istio 和平台提供的基本的连通性和服务发现能力。每个虚拟服务包含一组路由规则,Istio 按顺序评估它们,Istio 将每个给定的请求匹配到虚拟服务指定的实际目标地址。
虚拟服务配置的流量是根据http的request请求(根据路由规则匹配的port、URL、headers、end-user、exact(精确匹配))进行匹配而指向目标规则。
虚拟服务里面的路由规则按照从上往下的顺序进行选择,第一条具有最高优先级。
Destination rules(目标规则)
与虚拟服务一起, 目标规则是 Istio 流量路由功能的关键部分。您可以将虚拟服务视为将流量路由给定目的地的方式,然后使用目的地规则来配置该目的地的流量会发生什么。目标规则在评估虚拟服务路由规则后应用,因此它们适用于流量的“真实”目标。
目标规则配置的流量是指向k8s集群里面的svc。
目标规则里面可以配置访问后端svc的负载均衡策略(随机Random、权重Weight、最小请求 Weighted least request、轮询Round robin)进行负载。该负载均衡策略采用envoy的负载均衡策略。
Gateways(网关)
来管理网格的入站和出站流量,让您指定要进入或离开网格的流量。网关配置应用于在网格边缘运行的独立 Envoy 代理,而不是与服务工作负载一起运行的 Sidecar Envoy 代理。Istio 的网关资源可以配置 4-6 层的负载均衡属性,如对外暴露的端口、TLS 设置等。
网关一般配置的入站流量,即L7流量。
Service Entry(服务入口)
使用服务入口来添加一个入口到 Istio 内部维护的服务注册中心。添加了服务入口后,Envoy 代理可以向服务发送流量,就好像它是网格内部的服务一样。配置服务入口允许您管理运行在网格外的服务的流量,它包括以下几种能力:
Sidecar
Istio 让每个 Envoy 代理都可以访问来自和它关联的工作负载的所有端口的请求,然后转发到对应的工作负载。您可以使用 sidecar 配置去做下面的事情:
超时
超时是 Envoy 代理等待来自给定服务的答复的时间量,以确保服务不会因为等待答复而无限期的挂起,并在可预测的时间范围内调用成功或失败。HTTP 请求的默认超时时间是 15 秒,这意味着如果服务在 15 秒内没有响应,调用将失败。
重试
重试设置指定如果初始调用失败,Envoy 代理尝试连接服务的最大次数。通过确保调用不会因为临时过载的服务或网络等问题而永久失败,重试可以提高服务可用性和应用程序的性能。重试之间的间隔(25ms+)是可变的,并由 Istio 自动确定,从而防止被调用服务被请求淹没。HTTP 请求的默认重试行为是在返回错误之前重试两次。
熔断
熔断器是 Istio 为创建具有弹性的微服务应用提供的另一个有用的机制。在熔断器中,设置一个对服务中的单个主机调用的限制,例如并发连接的数量或对该主机调用失败的次数。一旦限制被触发,熔断器就会“跳闸”并停止连接到该主机。使用熔断模式可以快速失败而不必让客户端尝试连接到过载或有故障的主机。
故障注入(包含延迟、终止功能)
Istio 的故障注入机制来为整个应用程序测试故障恢复能力。故障注入是一种将错误引入系统以确保系统能够承受并从错误条件中恢复的测试方法。