Istio 1.0学习笔记(五):Istio的基本概念

栏目: 后端 · 发布时间: 7年前

内容简介:前面我们在Kubernetes上部署了Istio 1.0并实际操作了一下官方示例应用及流量管理的基本功能。本篇将总结一下Istio的基本概念,加深理解。istio的官网根据istio这4个基本功能的解释,已经对istio有了基本了解,后边准备继续分别以实操的形式学习这些功能。

前面我们在Kubernetes上部署了Istio 1.0并实际操作了一下官方示例应用及流量管理的基本功能。本篇将总结一下Istio的基本概念,加深理解。

1.0 Istio的定义

istio的官网 https://istio.io/ 首页上用一句话描述了istio的定义: Istio Connect, secure, control, and observe services. ,即Istio用来连接、保护、控制、观测服务。

  • 连接(connect):智能控制服务之间的流量和API调用,进行一系列测试,并通过红/黑部署逐步的升级
  • 保护(secure):通过托管认证、授权和服务之间的通信加密自动保护服务
  • 控制(control):应用策略,确保策略得以执行,并使资源在消费者之间平均分配
  • 观测(Observe):通过丰富的自动跟踪、监控、日志观测服务,了解正在发生的事情

根据istio这4个基本功能的解释,已经对istio有了基本了解,后边准备继续分别以实操的形式学习这些功能。

2.0 Istio的架构

Istio中的 官方文档 中对Istio的架构做了介绍。下图是文档中的Istio架构示意图:

Istio 1.0学习笔记(五):Istio的基本概念

Istio在逻辑上分为数据平面(data plane)和控制平面(control plane)两部分:

  • 数据平面:由一系列以sidecar形式部署的智能代理(Envoy)组成。这些代理可以调节和控制微服务及混合器(Mixer)之间的所有网络通信
  • 控制平面:负责管理和配置代理来路由流量,除此之外控制平面还配置混合器(Mixer)以执行策略和收集遥测数据

2.1 数据平面(Envoy)

Envoy是Istio的数据平面。Envoy早已经是CNCF的ServiceMesh项目之一,功能强大和稳定。

Istio使用Envoy的扩展版本。Envoy是以C++开发的高性能代理,用于接管服务网格中所有服务的所有inbound和outbound流量。 Istio实际上利用了很多Envoy已有的特性,例如:服务的动态发现、负载均衡、TSL终止、HTTP/2和gRPC代理、断路器、健康检查、基于百分比流量拆分的灰度发布(Staged rollouts with %-based traffic split)、故障注入以及丰富的度量指标。

Envoy以sidecar部署,与对应的服务在同一个Kubernetes Pod中。这样的部署方式使得Istio可以将大量了关于流量行为的信号作为属性(Attribute)提取出来。这些属性可以被用来在混合器(Mixer)中执行策略决策,并发送给监控系统,以提供整个Service Mesh的行为信息。

Sidecar模式允许我们将istio的功能添加到现有的部署中,而无需重构或重写现有的代码。

2.2 控制平面

控制平面对Service Mesh具有强大的控制力。Istio的控制平面由包括以下组件:

  • Pilot(领航员):为 Envoy sidecar 提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。 将控制流量行为的高级路由规则转换为Envoy的相关配置,并在运行时将它们传播到sidecar。Pilot将平台特定的服务发现机制抽象化并将其合成为符合 Envoy data plane APIs 的sidecar都可以使用的标准格式。这种松耦合的设计使得Istio能够在多种环境下运行,如Kubernetes、Consul、Nomad,为流量管理提供了统一的管理接口。

  • Mixer(混合器):Mixer是一个平台独立的组件,它的职责是在ServiceMesh上实施访问控制和使用策略(usage policies),并从envoy代理和其它服务中收集遥测数据。 代理提取请求级别的属性(Attribute),发送给Mixer进行评估。有关属性提取和策略评估的更多信息,请参见 Mixer Configuration documentation 。Mixer包含一个灵活的插件模型,确保其可以接入各种主机环境和基础设施的后端。因此,istio从这些细节中抽象出 Envoy代理和Istio管理的服务。

  • Citadel(城堡?):通过内置身份和凭证管理提供强大的服务之间和终端用户间的认证。可以使用Citadel将ServiceMesh中未加密的流量升级,并为运维人员提供基于服务标识而非网络控制的策略管理能力。Istio 0.5 版本开始支持授权特性 Istio’s authorization feature ,以控制谁可以访问您的服务。

  • Galley:是Istio 1.0中新引入的组件,在Istio中,承担配置的导入、处理和分发任务,为Istio提供了配置管理服务,提供在k8s服务端验证Istio的CRD 资源的合法性的方法。

2.3 个人理解

前面根据istio文档 What is Istio? 中的内容理解一下Istio架构中各个组件。下面都是个人的简单理解:

Istio有数据平面和控制平面组成:

  • 数据平面是以sidecar运行的Envoy代理,Envoy接收来自控制平面中Pilot的配置信息。Envoy作为代理接管了服务网格中所有服务的所有inbound和outbound流量。
  • 控制平面:
    • Pilot:负责与Kubernetes API Server交互。Pilot管理Envoy代理,提供了服务发现、流量管理等功能。 —– 连接(connect)
    • Citadel:主要关注安全,为服务之间以及与终端用户提供认证、授权、凭据管理等功能。 —– 保护(secure)
    • Mixer:用来接收来自Envoy代理的指标数据(遥测数据),可以实施访问控制和使用策略。—- 控制(control) 和 观测(Observe)
    • Galley:为Istio提供配置管理服务

最后,看一下我们前面部署istio时,在istio-system命名空间下创建了下面的的deployment:

kubectl get deploy -n istio-system
NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
grafana                    1         1         1            1           25d
istio-citadel              1         1         1            1           25d
istio-egressgateway        1         1         1            1           25d
istio-galley               1         1         1            1           25d
istio-ingressgateway       1         1         1            1           25d
istio-pilot                1         1         1            1           25d
istio-policy               1         1         1            1           25d
istio-sidecar-injector     1         1         1            1           25d
istio-statsd-prom-bridge   1         1         1            1           25d
istio-telemetry            1         1         1            1           25d
istio-tracing              1         1         1            1           25d
prometheus                 1         1         1            1           25d
servicegraph               1         1         1            1           25d

其中包含了 istio-pilotistio-citadelistio-policyistio-telemetry 组成的控制平面。

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Code

Code

Charles Petzold / Microsoft Press / 2000-10-21 / USD 29.99

Paperback Edition What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of ......一起来看看 《Code》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具