Istio系列学习(三)----Istio主要组件

一、Istio的完整的组件列表如下:

% kubectl -n istio-system get pod
NAME                                          READY     STATUS 
grafana-5f54556df5-s4xr4                      1/1       Running
istio-citadel-775c6cfd6b-8h5gt                1/1       Running
istio-galley-675d75c954-kjcsg                 1/1       Running
istio-ingressgateway-6f7b477cdd-d8zpv         1/1       Running
istio-pilot-7dfdb48fd8-92xgt                  2/2       Running
istio-policy-544967d75b-p6qkk                 2/2       Running
istio-sidecar-injector-5f7894f54f-w7f9v       1/1       Running
istio-telemetry-777876dc5d-msclx              2/2       Running
istio-tracing-5fbc94c494-558fp                1/1       Running
kiali-7c6f4c9874-vzb4t                        1/1       Running
prometheus-66b7689b97-w9glt                   1/1       Running

1、Istio-pilot
pilot是Istio的控制中枢,包含了服务发现和规则转化和下发.
1)服务发现:pilot直接从运行平台提取数据,并将其构造成istio的服务发现模型。
Istio系列学习(三)----Istio主要组件_第1张图片
2)规则转化与下发:负责将各种规则转换成envoy可识别的格式,通过xDs协议发送给envoy。
规则包括:virtualService、destinationRule、Gateway、ServiceEntry等流量治理规则,也包括认证授权等安全规则。
pilot将virtualService表达的路由规则分发到envoy
如下图:
Istio系列学习(三)----Istio主要组件_第2张图片
2、Istio-telemetry
它是收集遥测数据的mixer服务组件。
当网格中的两个服务发生了调用,服务的代理envoy就会上报遥测数据给istio-telemetry,istio-telemetry组件则根据配置将数据分发给后端的遥测服务。

3、Istio-policy
和telemetry共同构成了mixer服务.数据面在转发服务的请求前调用istio-policy的check接口检查是否允许访问,mixer根据配置将请求转发到对应的adapter做对应检查,返回允许或拒绝。如下图:
Istio系列学习(三)----Istio主要组件_第3张图片
4、istio-citadel

istio的核心安全组件,提供了自动生成、分发、转化与车市秘钥和证书的功能。
一直监听kube-apiserver,为每个服务生成证书和秘钥,并在pod创建时挂载到Pod上,代理容器使用这些文件做服务身份认证,进而代理两端服务实现双向TLS认证、通道加密等安全功能。

5、istio-galley
负责配置的管理组件,如验证配置纤细格式和内容的正确性,并将这些配置信息提供给pilot和mixer。

6、istio-sidecar-injector
负责自动注入,只要开启了自动注入,就会在pod创建时自动调用istio-sidecar-injector向pod中注入sidecar容器。
kube-apiserver在拦截到Pod的创建请求时,会调用自动注入服务istio-sidecar-injector生成sidcar容器的描述并插入原pod的定义中。所以最终创建的容器包括业务和sidecar容器。且注入过程对用户透明。

7、istio-proxy
istio-proxy中除了有envoy,还有一个pilot-agent。
envoy是c++开发的非常有影响力的服务代理,提供了动态服务发现、负载均衡、TLS、熔断、健康检查、流量拆分、灰度等功能。

8、istio-ingressgateway
入口处的gateway,即网格外访问网格内的服务就是通过这个gateway进行的。
ingressgateway的复杂和网格内的死的car是同样的执行体,都是从pilot处接收流量并执行。
Istio系列学习(三)----Istio主要组件_第4张图片
特点:
1)开放了一组端口,是网格内服务的外部访问接口。
2)入口处的流量都走该服务,会有并发和流量峰值,所以需要评估流量来规划规格和实例数。

还有其他的组件tracing,Zipkin提供了Istio的调用链,监控等功能.

你可能感兴趣的:(istio,kubernetes,java,docker)