服务网格Service Mesh & Istio重要概念
服务网格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 服务层。
Service Mesh产品更适合部署在容器环境中。
Sidecar 非常类似于传统网络中的“智能路由器”。
依托Sidecar,Service Mesh 提供了包括服务路由、负载均衡、流量控制、熔断机制、服务安全及服务监控等高级功能在内的、采用全新思路的无侵入的一整套微服务架构解决方案。
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 产品提供的基本功能:
- 服务发现、服务路由;
- 负载均衡、服务熔断;
- 安全的TLS服务间通信;