企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] # istio的介绍 ### 介绍 在介绍 istio 之前,需要知道什么是`Service Mesh` #### Service Mesh 概念 Service Mesh 的技术根本就是————`网络代理`代理是可以嵌套的,也就是说通信的双方A、B之间,可以有很多层代理,而这些代理对于A和B来说是透明的。 这个代理机制可以带来以下这些好处: * **拦截**:相当于是防火墙 * **统计**:统计网络中的数据信息 * **缓存**:将一些访问比较慢的网络热点数据作为缓存。CDN就是典型代表 * **分发**:也就是负载均衡功能,将流量分发到不同的后端。Nginx就是代表之一 * **跳板**:A和B之间不能直接访问,可以通过代理作为访问手段 * **注入**:既然代理可以看到流量,那么也就可以修改网络流量,向流量中加入数据 Service Mesh 就是代理的升级版,是一种**分布式微服务代理**在传统模式下,代理一般都集中在单独的服务器中,所有请求都会先通过代理,然后在转发到后端 而在 Service Mesh 中,**代理变成了分布式**,在k8s环境中,**每一个 Pod 中都运行着一个代理容器(这种模式称为 Sidecar 边车模式)**,这样的话,所有应用的流量都会被代理接管,然后将所有代理都**通过控制中心来统一管理**。 在微服务的架构中, Service Mesh 会知道整个集群的所有应用信息,并且额外添加了**热更新、诸如服务发现、降级熔断、认证授权、超时重试、日志监控等功能**。 #### istio 介绍 istio 就是Service Mesh 众多产品比较杰出的一个。 istio 包含以下组件: ##### istio-proxy(envoy) envoy是istio中的数据层面组件,提供了动态服务发现、负载均衡、TLS , HTTP/2 及gRPC 代理、熔断器、健康检查、流量拆分、灰度发布、故障注入等功能。在istio-proxy容器中除了有Envoy ,还有一个pilot-agent的守护进程。 ##### pilot 如果把数据面的envoy 也看作一种agent, 则 Pilot 服务端Master,下发指令控制客户端完成业务功能。 ![](https://img.kancloud.cn/56/a3/56a3781760ca6b0c032f4e7ab664b4f2_524x415.png) ##### mixer mixer 分为`istio-telemetry`和`istio-policy` * **istio-telemetry**:是用于收集数据的组件,当两个服务之间有调用时,代理 envoy 就会上班数据给 istio-telemetry 组件 * **istio-policu**:根据配置,将请求转发到相应的Adapter中做检查,给 envoy 返回是允许访问还是拒绝。对服务之间的访问进行可扩展的控制 ##### istio-citadel istio-citadel 是istio 的核心安全组件。 citadel 会时刻监控 kube-apiserver,然后以`Secret`的形式,为每个服务都生成证书密钥,并在生成 Pod 时,挂在到 Pod 中,代理envoy通过这个证书来对服务行进身份验证, ##### istio-galley istio-galley 负责管理配置的组件,验证配置信息的格式和内容正确性,然后将配置信息提供给`Pilot`和`mixer`使用, ##### istio-sidecar-injector 负责自动注入的组件。 在 Pod 创建时就会自动调用 istio-sidecar-injector ,向 Pod 中注入 Sidecar 容器。 这个注入动作对于用户来讲是透明的。 ##### istio-ingressgateway 是Gateway网关,从外部访问内部时,就要通过这个Gateway来进行,是一种Loadbalancer 类型的Service,并开放了一组端口,