istio学习
istio学习
什么是Service Mesh服务网格
在过去我们已经看到了单体应用程序开始拆分为较小的应用程序并通过各种微服务架构进行部署和通信。诸如Docker之类的容器化技术和诸如Kubernetes之类的编排系统加速了这一变化。在像Kubernetes这样的分布式系统上采用微服务架构有许多优势,但它也具有相当的复杂性。由于分布式服务必须相互通信,因此我们必须考虑服务发现,网络路由,故障重试、故障转移和熔断降。
而服务网格能够通过代理(Envoy,即数据平面)和控制平面来做到这一点,数据平面会和控制平面通信,一方面可以获取需要的服务之间的信息,另一方面也可以汇报服务调用的 Metrics 数据。控制平面可以进一步细分,分成了pilot、citadel和Gallery,他们各自的功能如下:
- Pilot:为 Envoy 提供了服务发现,流量管理和智能路由(AB 测试、金丝雀发布等),以及错误处理(超时、重试、熔断)功能。
- Citadel:为服务之间提供认证和证书管理,可以让服务自动升级成 TLS 协议。
- Galley:Galley 是 Istio 的配置验证、提取、处理和分发组件。它负责将其余的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节隔离开来。
本质上,服务之间的请求是通过与服务一起运行但位于基础结构层之外的代理路由的,这些代理基本上为服务创建了一个网状网络——因此得名为服务网格!通过这些代理,服务网格能够控制服务到服务通信的各个方面。尽管Istio与平台无关,但它经常与Kubernetes平台上部署的微服务一起使用。
istio的核心特征
流量管理
Istio 简单的规则配置和流量路由允许您控制服务之间的流量和 API 调用过程。
Istio 简化了服务级属性(如熔断器、超时和重试)的配置,并且让它轻而易举的执行重要的任务(如 A/B 测试、金丝雀发布和按流量百分比划分的分阶段发布)。
安全
Istio 提供了底层的安全通信通道,并为大规模的服务通信管理认证、授权和加密。Istio 是独立于平台的,可以与 Kubernetes(或基础设施)的网络策略一起使用。但它更强大,能够在网络和应用层面保护 pod 到 pod 或者服务到服务之间的通信。
可观察性
通过 Istio 的监控能力,可以真正的了解到服务的性能是如何影响上游和下游的;而它的定制 Dashboard 提供了对所有服务性能的可视化能力,并让您看到它如何影响其他进程。Istio 的 Mixer 组件负责策略控制和遥测数据收集。它提供了后端抽象和中介,将一部分 Istio 与后端的基础设施实现细节隔离开来,并为运维人员提供了对网格与后端基础实施之间交互的细粒度控制。