Istio-初识

What is Istio?

  1. Istio是一个用于服务治理的开发平台
  2. Istio是一个Service Mesh形态的服务治理开发平台
  3. Istio是一个Kubernetes紧密结合的适用于云原生场景的Service Mesh形态的平台

Main of Istio

  1. 自动注入:创建应用程序自动注入Sidecar代理。在K8s下创建Pod,Kube-apiserver调用管理面组件的Sidecar-Injector服务,自动修改应用程序的描述信息并注入Sidecar。在真正创建Pod,创建业务容器会在容器Pod内创建Sidecar容器
  2. 流量拦截:在Pod初始化的时候设置iptables规则,当流量到达根据iptables的规则拦截Inbound流量和Outbound流量到Sidecar
  3. 服务发现:服务发起方的Envoy调用管理面组件Pilot的服务发现接口获取目标服务的实例列表
  4. 负载均衡:服务发起方的Envoy根据配置的负载均衡策略选择服务实例,连接对应的实例地址
  5. 流量治理:Envoy从Pilot中获取配置的流量规则,在拦截到Inbound流量和Outbound流量执行治理逻辑
  6. 访问安全:在服务间访问时通过双方的Envoy进行双向认证和通道加密,并基于服务进行授权管理
  7. 服务遥测:在服务间通信,通信双方的Envoy都会链接到管理面的Mixer上报访问数据,并且通过Mixer将数据转发给对应的监控后端
  8. 策略执行:在进行服务访问,通过Mixer来判断是否可以访问
  9. 外部访问:在网格入口有一个Envoy扮演入口网关的角色

Components

istio-pilot

  1. Istio-pilot 是Istio 的控制中枢Pilot服务,Pilot只提供了服务发现,没有支持服务注册所以有解耦
  2. 向数据面下方规则,包括VirtualService、DestinationRule、Gateway、ServiceEntry等流量治理规则,也包括认证授权等安全规则。Pilot负责将各种规则转换成Envoy可识别的格式,通过标准的xDS协议发送给Envoy

istio- telemetry

  1. istio- telemetry是专门收集遥测数据的Mixer服务组件。在部署上,Istio控制面部署了俩个Mixer组件:istio- telemetry和istio-policy,分别处理遥测数据和策略执行。他们的容器镜像是相同的/istio/mixer

  2. 俩个服务发生调用的时候,服务的代理Envoy就会上报遥测数据给istio-telemtry服务组件,istio-telemetry服务组件则根据配置生成访问Metric等数据分发给后端的遥测服务。

istio-policy

istio-policy是另外一个Mixer服务,和istio- telemetry基本上是完全相同的机制和流程。数据面会在转发服务的请求前调用istio-policy的Check进行检查是否访问,Mixer根据配置将请求转发到对应的Adapter做鸡纳差

istio- citadel

服务列表的istio- citadel是Istio的安全组件,提供了自动生成、分发、轮换和撤销密钥和证书功能。Citadel一直监听Kube-apiserver,以Secret形式给每个服务生成证书密钥,并在Pod进行挂载

istio- gallery不给数据面提供业务能力,而是提供控制面的组件支持,网关服务

istio- sidecar-injector

Istio-sidecar-injector负责自动主任,开启自动注入之后在Pod创建时,就会注入Sidecar容器

istio-proxy

但关注Pod的详细信息,会发 现这个容器的正式名字是istio-proxy,不是通用的Envoy镜像,而是叠 加了Istio的Proxy功能的一个扩展版本

istio-ingressgateway

istio-ingressgateway 就是入口处的 Gateway,从网格外访问网格内 的服务就是通过这个Gateway进行的。istio-ingressgateway比较特别, 是一个Loadbalancer类型的Service,不同于其他服务组件只有一两个端 口,istio-ingressgateway 开放了一组端口,这些就是网格内服务的外部 访问端口