内容简介:前面我们在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在逻辑上分为数据平面(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-pilot
、 istio-citadel
、 istio-policy
、 istio-telemetry
组成的控制平面。
参考
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- thinkPHP学习笔记之基础概念(一)
- nginx学习笔记之——(一)重要概念
- 《ArcGIS 地理信息系统教程》概念笔记
- OpenGL ES 3.0基础概念笔记
- Python学习笔记(五)—第七、八天,面向对象概念
- 程序员笔记——Spring基本概念速览
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法笔记上机训练实战指南
胡凡、曾磊 / 机械工业出版社 / 2016-7 / 57
《算法笔记上机训练实战指南》是《算法笔记》的配套习题集,内容按照《算法笔记》的章节顺序进行编排,其中整理归类了PAT甲级、乙级共150多道题的详细题解,大部分题解均编有题意、样例解释、思路、注意点、参考代码,且代码中包含了详细的注释。读者可以通过本书对《算法笔记》的知识点进行更深入的学习和理解。书中印有大量二维码,用以实时更新或补充书籍的内容及发布本书的勘误。 《算法笔记上机训练实战指南》可......一起来看看 《算法笔记上机训练实战指南》 这本书的介绍吧!