【云驻共创】华为云云原生黄金课程09:Istio服务网格快速入门
一、服务网格的概念介绍
1.1 服务网格的发展历程
了解服务网格之前,先了解一下什么是云原生,CNCF(Cloud Native Computing Foundation (云原生基金会))对于云原生的定义是,云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
在云原生技术中,服务网格的趋势是,服务治理与服务逻辑逐步解耦,服务治理能力下沉到基础设施,服务网格以基础设施的方式提供无侵入的连接控制、安全、可监测性、灰度发布等治理能力,典型的服务网格产品如华为 ASM、谷歌 GCP。
在微服务的架构中,将应用和服务按照业务逻辑对功能模块解耦,每个功能模块独立的部署和运行在一个容器中,这样就可以被独立的开发和运维,最终达到快速迭代更新、功能快速上线的目的。
服务网格就是在每个功能模块侧部署一个代理,由代理拦截和转发服务之间的流量。服务网格还有一个控制面,它负责策略的下发,类似人脑一样发出一些行动的指令。控制面和代理之间通过 gRpc 保持连接,通过连接代理上报可以监控信息,也可以接收控制面下发的配置信息,从而完成对整个网格流量的治理。
服务网格是一种云原生的、应用层的网络技术
- 云原生:面向弹性、(微)服务化、去中心化业务场景。
- 应用层:以应用为中心,关注应用的发布、监控、恢复等。
- 网络:关注应用组件之间的接口、流量、数据、访问安全等。
Istio 是一个很有代表性的服务网格技术,在Google、IBM、RedHat 等开源巨头成熟的运作与社区治理机制下快速发展,从立项到现在已经经过多个版本的迭代开发,已经是可以商用的。
1.2 服务网格的相关概念
Istio 是一种云原生的、应用层的、网络技术,用于解决组成应用的组件之间的连接、安全、策略、可观察性等问题。因为容器和微服务都有着轻量、敏捷的特点,所以,微服务运行在容器中日益流行。Kubernetes 在容器的编排领域已经成为事实标准,而 Istio 提供的 Service Mesh 方式无侵入微服务治理能力,也已经成为微服务治理的趋势,所以,Istio 和 Kubernetes 紧密结合,基于 Kubernetes 构建,补齐了 Kubernetes 的治理能力,提供了端到端的微服务运行治理平台。也就是说,对于云原生应用,采用 Kubernetes 构建微服务部署和集群管理能力,采用 Istio 构建服务治理能力,将逐渐成为应用微服务转型的标准配置。
Istio 解决了开发人员和运维人员所面临的从单体应用向分布式微服务架构转变的挑战。
服务网格用来描述组成这些应用程序的微服务网络以及它们之间的交互。随着服务网格的规模和复杂性不断的增长,它将会变得越来越难以理解和管理。它的需求包括服务发现、负载均衡、故障恢复、度量和监控等。服务网格通常还有更复杂的运维需求,比如 A/B 测试、金丝雀发布、速率限制、访问控制和端到端认证。
Istio 提供了对整个服务网格的行为洞察和操作控制的能力,以及一个完整的满足微服务应用各种需求的解决方案。
二、Istio 服务网格架构及使用场景
2.1 Istio 的概念初识
- 连接能力:将请求路由到服务,连通服务和发现服务,很容易的控制服务之间的流量和 API 调用。Istio 通过集中配置的流量规则控制服务间的流量和调用,实现负载均衡、熔断、故障注入、重试、定向等服务治理功能。例如,80% 的流量转到版本 1,20% 的流量转到版本 2,调用失败尝试重试连接服务,当请求调用达到某个阈值就进行熔断。
- 安全:为了提高安全性,我们可以很容易把 Istio 服务的通信模式配置为双向 TLS 也就是 mTLS。Istio 安全功能提供强大的身份,强大的策略,透明的 TLS 加密,认证,授权和审计(AAA)工具来保护你的服务和数据。
- 可观测性:指标度量和日志的配置、收集和处理,应用的调用追踪。Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观测性,使运维人员能够排查故障、维护和优化应用程序,而不会给服务的开发人员带来任何额外的负担。通过 Istio,运维人员可以全面了解到受监控的服务如何与其他服务以及 Istio 组件进行交互。配合可视化工具,可方便运维人员了解服务的运行状态,发现并解决问题。
- 策略执行:通过策略灵活的控制服务之间的访问。
Istio 的核心原理,是网络代理,可以拦截所有的流量,这些代理负责协调和控制微服务之间的所有网络通信。它们还收集和报告所有网格流量的遥测数据。Envoy 代理用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。Ingress gateway 是入口处的 Gateway,从网络外访问网格内的服务都需要经过它,再转发到对应的服务。Virtual Service 实现了网络之间的互通,所有的访问策略都是通过 Virtual Service 来实现的,实现的功能包括重试、超时和故障注入策略。Destination Rule 也是 Istio 流量路由功能的关键部分,其中包括负载均衡模型、TLS 安全模式或熔断器设置。
控制平面,管理并配置代理来进行流量路由。Istiod 由 Pilot,Galley,Citadel 组成。Galley 作为负责配置管理的组件,验证配置信息的格式和内容的正确性,并将这些配置信息提供给控制面的Pilot服务来执行策略,Citadel 是 Istio 的核心安全组件,负责身份认证和证书管理。
Gateway、Virtual Service、Destination Rule 在配置文件上他们是通过 kind 区分的。Gateway 的作用就是分流,而 Virtual Service 的作用就是将分流来的流量进行管理。在 Virtual Service 中有一个 gateways 字段,它和 Gateway 中的 namespace 和 name 对应,当 http 的请求匹配到 80 端口流量就会被转发到 destination 的 host v1 的版本上。
2.2 Istio 的技术架构
Istio 服务网格从逻辑上分为数据平面和控制平面。
- 数据平面:由一组智能代理(Envoy)组成,被部署为 Sidecar。这些代理负责协调和控制微服务之间的所有网络通信。它们还收集和报告所有网格流量的遥测数据。
- 控制平面:管理并配置代理来进行流量路由。
Istio 核心组件
- Pilot:为 Envoy Sidecar 提供服务发现功能,用于智能路由的流量管理功能(如 A/B 测试和金丝雀部署 )和以及弹性功能( 超时、重试、熔断器等 )。
- Citadel:通过内置的身份和证书管理,可以支持强大的服务到服务以及最终用户的身份验证。
- Galley:Istio 的配置验证、提取、处理和分发组件。
2.3 Istio 的特性功能
核心理念
- 非侵入式 Sidecar 注入技术,将数据面组件注入到应用所在的容器,通过劫持应用流量来进行功能实现,应用无感知。
- 北向 API 基于 K8S CRD 实现,完全声明式,标准化。
- 数据面与控制面通过 xDS gRPC 标准化协议通信,支持订阅模式。
核心特性
- 服务 & 流量治理:熔断,故障注入,丰富的负载均衡算法,限流,健康检查,灰度发布,蓝绿部署等。
- 流量与访问可视化:提供应用级别的监控,分布式调用链,访问日志等。
- 安全连接:通过 mTLS、认证、鉴权等安全措施帮助企业在零信任的网络中运行应用。
2.4 Istio 的应用场景
- 灰度发布:版本升级平滑过度的一种方式,金丝雀发布、蓝绿发布等。
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行 A/B testing,即让一部分用户继续用产品特性 A,一部分用户开始用产品特性 B,如果用户对 B 没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到 B 上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
- 流量管理:负载均衡、连接池管理、熔断、故障注入等。
流量管理是基于网络的流量现状和流量管控策略,对数据流进行识别分类,并实施流量控制、优化和对关键 IT 应用进行保障的相关技术。
- 访问可视化:监控数据采集、运行指标分析、应用拓扑和调用链展示等。
- 应用场景:电商应用、政企业务、视频业务等。
三、 总结
Istio 将复杂的版本升级变得简单,流量控制变得简单,而且配合可视化工具,可方便运维人员了解服务的运行状态,发现并解决问题。
本文整理自华为云社区【内容共创】活动第13期。
https://bbs.huaweicloud.com/blogs/330939
任务15. 华为云云原生黄金课程09:Istio服务网格快速入门
- 点赞
- 收藏
- 关注作者
评论(0)