为了更好地理解Istio的流量管理,我们需要先搞清楚其中涉及的几个基本术语:
·Sidecar(边车):Sidecar自定义资源描述了Sidecar代理的配置,该代理协调与其连接的工作负载实例的入站和出站通信。默认情况下,Istio将为网格中的所有Sidecar代理进行配置,使其具有到达网格中每个工作负载实例所需的必要配置,并接受与工作负载关联的所有端口上的流量。Sidecar资源提供了一种细粒度调整端口、协议的方法,使得代理能接受向工作负载转发流量或从工作负载转发流量。此外,可以限制代理在从工作负载实例转发出站流量时可以达到的服务集。
·服务(Service):绑定到服务注册表中唯一名称的应用程序行为单位。服务由运行在pod、容器、虚拟机上的工作负载实例实现的多个网络端点组成。
·服务版本(Service versions):也称为子集(subsets),在持续部署场景中,对于给定服务,可能会存在运行着应用程序二进制文件的不同变种的不同实例子集。这些变种不一定是不同的API版本,也可以是对同一服务的迭代更改,部署在不同的环境中,如生产环境、预发环境或者开发测试环境等。
·源(Source):调用目标服务的下游客户端。
·主机(Host):客户端在尝试连接服务时使用的地址。
·访问模型(Access model):应用程序在不知道各个服务版本(子集)的情况下仅对目标服务(主机)进行寻址。版本的实际选择由Sidecar代理确定,使应用程序代码能够脱离依赖服务的演变。
·虚拟服务(Virtual Service):一个虚拟服务定义了一系列针对指定服务的流量路由规则。每个路由规则都针对特定协议定义流量匹配规则。如果流量符合这些特征,就会根据规则发送到服务注册表中的目标服务(或者目标服务的子集或版本)。
·目标规则(Destination Rule):目标规则定义了在路由发生后应用于服务的流量的策略。这些规则指定负载均衡的配置,来自Sidecar代理的连接池大小以及异常检测设置,以便从负载均衡池中检测和驱逐不健康的主机。