[Istio是什么?] 还不知道你就out了,40分钟快速理解(上)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: [Istio是什么?] 还不知道你就out了,40分钟快速理解

前言

这篇文章属于纯理论,所含内容如下,按需阅读:

  • Istio概念、服务网格、流量管理、istio架构(Envoy、Sidecar 、Istiod)
  • 虚拟服务(VirtualService)、路由规则、目标规则(DestinationRule)
  • 网关(Gateway)、网络弹性和测试(超时、重试、熔断器、故障注入)


Istio是什么?

  • Istio是一个开源的服务网格,透明的接入到分布式服务中。它也是一个平台,集成任何日志、遥测和策略系统的 API 接口。
  • Istio 成功高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法。
  • Istio 有助于降低 DevOps 压力、开发团队的压力。

服务网格是什么?

用来描述组成微服务应用程序、微服务网络以及它们之间的交互。

  • 组成微服务网络
  • 实现服务之间的交互

应用场景

  • 服务发现、负载均衡、故障恢复、度量和监控
  • A/B 测试、金丝雀发布、速率限制、访问控制和端到端认证

为什么使用Istio?

服务网格是通过sidecar(边车)代理服务实现,控制平面主要是对sidecar的配置和管理,这包括:

  • HTTP、gRPC、WebSocketTCP 流量自动负载均衡。
  • 通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。
  • 可插拔的策略层和配置 API,支持访问控制、速率限制和配额
  • 集群内(包括集群的入口和出口)所有流量的自动化度量、日志记录追踪
  • 在具有强大的基于身份验证和授权的集群中实现安全的服务间通信。

Istio还支持扩展,满足你部署需求!



流量管理介绍

  • Istio流量路由规则可以很容易的控制服务之间的流量API调用。能实现A/B测试、金丝雀发布、基于流量百分比发布。
  • 开箱即用的故障恢复特性,有助于增强应用的健壮性,从而更好地应对被依赖的服务或网络发生故障的情况。
  • Istio 的流量管理由Envoy代理服务提供。网格内服务发送和接收的所有流量都由 Envoy 代理处理,让控制网格内的流量变得异常简单,不需要对服务做更改。

为了在网格中导流,Istio 需要知道 endpoint 在哪和属于哪个服务。为了定位到service registry(服务注册中心),Istio 会连接到一个服务发现系统。例如,如果您在 Kubernetes 集群上安装了 Istio,那么它将自动检测该集群中的服务和 endpoint(端点)。

使用此服务注册中心,Envoy 代理可以将流量定向到相关服务。大多数基于微服务的应用程序,每个服务的工作负载都有多个实例来处理流量,称为负载均衡池。默认情况下,Envoy 代理基于轮询调度在服务的负载均衡池内分发流量,按顺序请求发送给池中每个成员,一旦所有服务实例均接收过一次请求后,重新回到第一个池成员。

这些 API 也使用 Kubernetes 的自定义资源定义(CRDs)来声明,可以使用 YAML 进行配置



istio架构

Istio 服务网格 逻辑上分为数据平面(Data plane)和控制平面(Control plane)

  • 数据平面:Envoy代理被部署为sidecar,负责协调和控制微服务之间的通信,收集和报告所有网格流量的遥测数据。
  • 控制平面:管理并配置Envoy代理

Envoy

  • C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。

Envoy 代理被部署为服务的 Sidecar,在逻辑上为服务增加了 Envoy 的许多内置特性,例如:

  • 动态服务发现
  • 负载均衡
  • TLS 终端
  • HTTP/2 与 gRPC 代理
  • 熔断器
  • 健康检查
  • 基于百分比流量分割的分阶段发布
  • 故障注入
  • 丰富的指标

Sidecar

  • 允许 Istio 可以执行策略决策,提取丰富的遥测数据,接着将这些数据发送到监视系统以提供整个网格行为的信息。
  • Sidecar 代理还允许向 Istio 添加功能,不需要重新设计架构或重写代码。

Istiod

  • Istiod 提供服务发现、配置和证书管理。
  • Istiod 将控制流量高级路由规则转换为 Envoy 特定的配置,并在运行时传播给 Sidecar。
  • Istiod 安全通过内置的身份和凭证管理,实现了强大的服务对服务和终端用户认证。
  • Istiod 充当证书授权(CA),生成证书以允许在数据平面中进行 mTLS 通信


虚拟服务(VirtualService)

  • 配置请求流量到服务,基于连通性和服务发现能力。
  • 每个虚拟服务包含一组路由规则。可以实现负载均衡、基于不同版本流量百分比路由。

为什么使用虚拟服务?

虚拟服务在增强 Istio 流量管理方面,发挥着至关重要的作用,通过对客户端请求与真实响应请求目标工作负载进行解耦来实现。

基于不同服务版本的流量百分比路由,实现A/B 测试、金丝雀发布

栗子

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v3

hosts字段

  • 虚拟服务的主机,客户端请求路由规则的目标地址,即客户端访问服务的地址。
  • 虚拟服务主机名可以是 IP 地址、DNS 名称,或者依赖于平台的一个简称(Kubernetes 服务的短名称)也可以使用通配符(“*”)前缀

路由规则

  • http 字段包含虚拟服务的路由规则,用来描述匹配条件和路由行为,它们把 HTTP/1.1、HTTP2 和 gRPC 等流量发送到hosts字段指定的目标
    一个路由规则包含了请求要流向哪个目标地址,具有 0 或多个匹配条件,取决于您的使用场景。

匹配条件

示例中的第一个路由规则有一个条件,因此以 match 字段开始。在本例中,您希望此路由应用于来自 ”jason“ 用户的所有请求,所以使用 headersend-userexact 字段选择适当的请求。

- match:
   - headers:
       end-user:
         exact: jason

Destination

  • route 部分的 destination 字段指符合此条件的流量的实际目标地址。
  • 与虚拟服务的 hosts 不同,destination 的 host 必须是存在于 Istio 服务注册中心的实际目标地址,否则 Envoy 不知道该将请求发送到哪里。
route:
- destination:
    host: reviews
    subset: v2

destination 片段还指定了 Kubernetes 服务的子集,将符合此规则条件的请求转入其中,本例中子集名称是 v2。

路由规则优先级

路由规则按从上到下的顺序选择,虚拟服务中定义的第一条规则有最高优先级,不满足第一个路由规则的流量均流向一个默认的目标

本例中:第二条规则没有 match 条件,直接将流量导向 v3 子集。

- route:
  - destination:
      host: reviews
      subset: v3

路由规则的更多内容

可以在流量端口、header 字段、URI 等内容上设置匹配条件

匹配条件:

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
负载均衡 Kubernetes 网络协议
[Istio是什么?] 还不知道你就out了,40分钟快速理解(下)
[Istio是什么?] 还不知道你就out了,40分钟快速理解(下)
112 0
|
负载均衡 Kubernetes 监控
[Istio是什么?] 还不知道你就out了,一文40分钟快速理解
这篇文章属于纯理论,所含内容如下,按需阅读: - `Istio概念、服务网格、流量管理、istio架构(Envoy、Sidecar 、Istiod)` - `虚拟服务(VirtualService)、路由规则、目标规则(DestinationRule)` - `网关(Gateway)、网络弹性和测试(超时、重试、熔断器、故障注入)`
381 0
[Istio是什么?] 还不知道你就out了,一文40分钟快速理解
|
17天前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
39 2
|
1月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
53 8
|
1月前
|
Kubernetes 负载均衡 安全
Istio在微服务中释放服务网格的力量
Istio在微服务中释放服务网格的力量
50 4
|
3月前
|
负载均衡 监控 安全
Istio:微服务治理的超级英雄,一键解锁你的服务网格超能力,让管理复杂变简单!
【8月更文挑战第31天】随着云原生技术的发展,微服务架构成为主流,但其复杂性与管理难题也随之增加。Istio作为开源服务网格平台,通过独特的数据平面和控制平面设计,实现了微服务通信的透明管理,简化了治理复杂度。本文将对比Istio与传统微服务管理方法,详细介绍Istio的架构及其工作原理,包括Envoy代理、服务发现、负载均衡、流量管理、安全认证以及监控等功能。Istio不仅简化了微服务治理,还提供了强大的流量控制和安全机制,使开发者能更高效地管理应用。
71 2
|
3月前
|
开发者 项目管理 开发工具
震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
64 1
|
3月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
75 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
5月前
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
674 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
|
Dubbo Java 应用服务中间件
开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比
开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比
1092 7