简介
服务网格(Service mesh
)是服务间通信的基础设施层。它对全局流量和通信进行监控和管理,提供包括可观察性、流量转移(用于灰度发布)、弹性能力(例如断路和重试/超时)等一系列功能,并为服务之间的通信提供双向 TLS 认证能力,让网格能够对请求和响应进行自动加密和解密。
特点
- 治理能力独立(Sidecar)
- 应用程序无感知
- 服务通信的基础设施层
关注的方面
- 可观察性
- 安全性
- 可运维性
- 可拓展性
为什么需要?
Kubernetes
提供平台基础设施层强大的容器编排与调度能力
- 服务部署与弹性伸缩:
Deployment
- 服务拆分与服务发现:
Service
Kubernetes
提供简单的负载均衡
- 负载均衡:基于
IPVS
或Iptables
的简单均衡机制
但是Kubernetes
在服务治理方面并不完备,缺少了动态路由、熔断、灰度发布等等功能,需要由服务网格互补。
什么时候用Service Mesh?
随着我们的微服务越来越细分,我们所要管理的服务正在成倍的增长着,Kubernetes
提供了丰富的功能,使得我们可以快速的部署和调度这些服务,同时也提供了我们熟悉的方式来实现那些复杂的功能,但是随着部署的应该越来越多,复杂度越来越高,当临界点到来时,可能就是我们真正要去考虑使用 Service Mesh
的时候了。
Istio问世
Istio
是一个开放服务网格,是Service Mesh
标准实现,也是当下最流行的,提供了一种连接,管理和保护微服务的统一方法。它支持管理服务之间的流量,执行访问策略以及汇总遥测数据,所有这些都无需更改微服务代码。