首页 > 数据库 > 数据库开发技术 > Service?Mesh 从0-1 教程(上)
Istio 简介
2.1、istio 架构
动态状态,包括 CPU 使用率、内存占用情况、以及当前正在运行的进程列表等。top 命令会定期更新这些信息,为用户提供一个动态的、实时的系统监控视图。

Istio 是 Service Mesh 架构的一个具体实现,它引入了一个代理层(通常是 Envoy)来透明地处理服务之间的通信。这种代理层通常被称为数据平面(Data Plane),因为它负责处理实际的网络流量和数据传输。在 Istio 的 Service Mesh 中,每个服务实例(无论是用 Java、Go、Python 等任何语言编写的)都会与一个 Envoy 代理一起部署。Envoy 代理会拦截进出服务实例的所有流量,并根据 Istio 的配置规则进行路由、限流、熔断等操作。
与此同时,Istio 还提供了控制平面(Control Plane),用于管理和配置数据平面中的代理。控制平面由一组组件组成,包括 Pilot、Citadel、Mixer 和 Galley 等,它们协同工作来提供策略管理、流量管理、服务发现、安全性等功能。
而且中间的网络协议支持 HTTP/1.1,HTTP/2,gRPC 或者 TCP,可以说覆盖了主流的通信协议。代理这一层,称之为数据平面。
控制平面做了进一步的细分,分成了 Pilot、Citadel 和 Galley,它们的各自功能如下:
Pilot:为 Envoy 提供了服务发现,流量管理和智能路由(AB 测试、金丝雀发布等),以及错误处理(超时、重试、熔断)功能。
Citadel:为服务之间提供认证和证书管理,可以让服务自动升级成 TLS 协议。
Galley:Galley 是 Istio 的配置验证、提取、处理和分发组件。它负责将其余的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节隔离开来。
数据平面会和控制平面通信,一方面可以获取需要的服务之间的信息,另一方面也可以汇报服务调用的 Metrics 数据。

2.1、为什么使用 Istio?
Istio 提供了一种在微服务架构中实现网络通信管理的强大解决方案,它允许团队在几乎不改变或完全不改变服务代码的情况下,轻松地构建和管理一个高效、安全、可靠的服务网络。Istio 的实现是通过在每个服务旁边部署一个特殊的 sidecar 代理(通常是 Envoy)来完成的,这个代理负责拦截并管理所有微服务之间的网络通信。
Istio 的控制平面为这些 sidecar 代理提供了丰富的配置和管理功能,包括:
流量管理:自动进行负载均衡,并支持 HTTP、gRPC、WebSocket 和 TCP 等多种协议。此外,它还允许通过详细的路由规则、重试策略、故障转移和故障注入等方式对流量进行细粒度的控制。
策略与配置:提供了可插拔的策略层和配置 API,用于实现访问控制、速率限制、配额管理等安全策略。
可观测性:能够自动记录、度量和追踪集群内部(包括入口和出口)的所有流量,为服务的监控和诊断提供了强有力的支持。
安全性:支持基于身份验证和授权的集群内安全通信,确保服务间的通信是加密和受信任的。
stio 为可扩展性而设计,可以满足不同的部署需求。

2.2、核心特性
Istio 以统一的方式提供了许多跨服务网络的关键功能。

2.2.1 核心组件
Envoy:Istio使用Envoy作为数据平面,Envoy是一个高性能的代理和路由器,它负责实现服务网格的核心功能。
Pilot:Pilot是Istio的智能路由组件,它负责动态地路由流量到目标服务
Citadel:Citadel是Istio的认证和授权组件,它负责管理服务网格中的身份和访问控制
Galley:Galley是Istio的配置管理组件,它负责管理和验证服务网格中的配置信息
Telemetry:Telemetry是Istio的监控和追踪组件,它负责收集和报告服务网格的性能指标和日志信息。

2.2.2、流量管理
Istio 通过其灵活的规则配置和流量路由功能,极大地增强了服务间通信和API调用的管理能力。它简化了以往复杂的服务级配置任务,如熔断器策略、超时设置和重试机制,使得这些配置变得直观且易于操作。
更重要的是,Istio 使得诸如A/B测试、金丝雀发布和基于流量百分比的分阶段发布等关键任务变得轻而易举。这些功能使得开发人员和运维人员能够更精细地控制服务的发布和升级过程,从而确保系统的稳定性和可靠性。
通过Istio,我们可以获得对服务流量的深度可视性,包括流量路径、流量量以及潜在的性能瓶颈。这种可视性使我们能够提前发现并解决问题,避免它们对生产环境造成影响。
此外,Istio 提供了开箱即用的故障恢复特性,如熔断、限流和超时等。这些特性使得服务调用更加可靠,即使在面临网络抖动、服务过载或其他异常情况时,也能确保系统的稳定性和可用性。

2.2.3、安全
Istio 的安全特性极大地简化了开发人员的工作,让他们能够专注于应用程序的核心逻辑,而无需过多关注底层的安全通信细节。Istio 提供了全面的底层安全通信机制,包括认证、授权和加密,确保服务间通信的安全性。这种安全性是默认启用的,使得开发人员能够在不同协议和运行时之间实施一致的安全策略,而无需对应用程序代码进行大量或任何修改。
Istio 的安全性是独立于平台的,可以与现有的网络策略(如 Kubernetes 的网络策略)无缝集成。然而,Istio 的功能更为强大,因为它不仅在网络层面保护 pod 到 pod 或服务到服务的通信,还能够在应用层面提供额外的安全控制。

2.2.4、可观察性
Istio 的强大追踪、监控和日志功能为服务网格部署提供了深入的洞察能力。这些功能不仅帮助您全面理解服务之间的交互和性能瓶颈,还通过直观的定制 Dashboard 展示了服务性能对整个系统的影响。
Istio 的 Mixer 组件作为策略控制和遥测数据收集的核心,它确保了 Istio 的灵活性和可配置性,同时隐藏了后端基础设施的复杂性。这使得运维人员能够更专注于管理网格,而无需深入了解底层技术的细节。
这些功能共同协作,使得您能够更有效地设置、监控和加强服务的服务水平目标(SLO)。无论是预防潜在问题还是快速响应已经出现的问题,Istio 都为您提供了强大的支持,确保服务的稳定性和可靠性。

2.3、平台支持
Istio 独立于平台,被设计为可以在各种环境中运行,包括跨云、内部环境、Kubernetes、Mesos 等等。您可以在 Kubernetes 或是装有 Consul 的 Nomad 环境上部署 Istio。Istio 目前支持:
Kubernetes 上的服务部署
基于 Consul 的服务注册
服务运行在独立的虚拟机上
期待你的
分享
点赞
在看

添加博主
微信号|yfq940-
原文作者:步步运维步步坑;如有侵权,请联系管理员删除。