服务网格Service Mesh & Istio 基本概念

Istio 来自希腊语,英文意思是“ Sail”,中文是“启航”之意。Istio 的底层实现依赖Envoy,并且直接定位于Kubernetes 平台。

Istio 与希腊语为“舵手”的Kubernetes结合在一起,意思就是“掌舵启航”。

Service Mesh - 是一个用于处理服务与服务之间通信(调用)的复杂的基础架构设施。

Service Mesh 通常是一组轻量级的网络代理程序,这些网络代理程序就部署在用户的应用程序旁边(Sidecar),而应用代码感知不到它们的存在。

Istio 将会成为市场主流,因为Istio 开源、免费,而且还有巨头们的大力支持,小清新的Conduit 则会在中小企业中赢得一定的口碑和市场份额。

服务网格Service Mesh 原理

从ServiceA到ServiceB的访问流量,要先后经过ServiceA的Sidecar层、ServiceA 所在机器的TCP/IP网络栈,之后通过网络到达ServiceB所在机器的TCP/IP网络栈、ServiceB的Sidecar 层,之后才能抵达ServiceB 服务层。

服务网格架构(服务网格ServiceMesh)(1)

Service Mesh产品更适合部署在容器环境中。

Sidecar 非常类似于传统网络中的“智能路由器”。

依托Sidecar,Service Mesh 提供了包括服务路由、负载均衡、流量控制、熔断机制、服务安全及服务监控等高级功能在内的、采用全新思路的无侵入的一整套微服务架构解决方案。

服务网格架构(服务网格ServiceMesh)(2)

Pilot(Istio-Manager)

Pilot 提供给Envoy 的主要是配置相关的接口,如服务发现、负载均衡池、路由表动态更新。

Envoy API 负责和Envoy 通信,主要用来发送服务发现信息、服务路由表、流量控制规则给Envoy 实例。

Mixer

用来实现服务与周边基础设施的隔离问题;

Mixer 采用了插件机制,每个插件都被称为适配器,比如日志插件、监控插件、配额插件、ACL插件等;

策略(Policy) - (1)服务访问限速(Rate Limit);(2)黑白名单(Blacklist、Whitelist)

Citadel(Istio-Auth)

负责解决微服务架构中的安全问题。

Citadel 首先会创建 Kubernetes Secret 来保存Service的私钥和证书,然后通过 Kubernetes Volume将Secret中的私钥和证书映射到容器里。

这样,两个Service 就可以在彼此对应的代理,即Envoy之间,建立一个加密的TLS通道来实现数据传输的安全了。

Envoy 与对应的Service 之间,还是普通的TCP 传输,因为它们是本地 Socket通信,并不通过网络。

Service Mesh 产品提供的基本功能:

服务网格架构(服务网格ServiceMesh)(3)

,