3.1 Istio的核心组件及其功能

  Istio总体分两部分:控制面数据面。

  数据面(sidecar):sidecar通过注入的方式和业务容器共存于一个pod,会劫持业务容器的流量,并接受控制面组件的控制,同时会向控制面输出日志、跟踪以及监控数据。

  控制面:Istio的核心,管理Istio的所有功能。

  

  3.1.1 Pilot

  Pilot是Istio的主要控制点,Istio的流量由Pilot管理。

  pilot完成以下任务:

  • 从K8s或其他平台的注册中心获取服务信息,完成服务发现过程。
  • 读取Istio的各项控制配置,在进行转换之后,将其发给数据面进行实施。

pilot的配置内容被转换为数据面能理解的格式,下发给Sidecar, Sidecar根据pilot指令,将路由、服务、监听、集群等信息转换为本地配置,完成控制行为落地。

  3.1.2 Mixer

  主要职责两个:预检汇报

  Mixer的简单工作流程如下:

  (1)用户将Mixer配置发送到K8s中。

  (2)Mixer通过对K8s资源的监听,获知配置变化。

  (3)网格中的服务在每次调用之前,都向Mixer发出预检请求,查看调用是否允许执行。每次调用之后,都发出报告信息,向Mixer汇报在调用过程中产生的

监控跟踪数据。

  (4)Mixer中包含多个被称为Adapter的组件,这些组件用来处理在Mixer中接收的预检和报告数据,从而完成Mixer的各种功能。

    3.1.3 Citadel

          用于证书管理的,在集群中启用了服务之间的加密后,Citadel负责为集群中各个服务在统一CA的条件下生成证书,并下发给各个服务中的Sidecar,服务之间            的TLS就依赖这些证书完成校验过程。

3.1.4 Sidecar(Envoy)

          Sidecar就是Istio中的数据面,负责控制面对网络控制的实际执行。

     Istio中的默认Sidecar是由Envoy派生出来的,理论上,只要支持Envoyd xDS协议,其他类似反向代理软件就都可以代替Envoy来担当这一角色。

     Istio的默认实现中,Istio利用istio-init初始化容器中的iptables指令,对所在Pod的流量进行劫持,从而接管Pod中应用的通信过程,如此一来,

          就获得通信的控制权,控制面的控制目的最终得以实现。

    K8s中,同一个Pod的多个容器之间,网络栈是共享的,这是sidecar实现的基础。

3.2 核心配置对象  

  Istio在安装过程中会进行CRD的初始化,在K8s集群中注册一系列的CRD。CRD在注册之后,会建立一些基础对象,完成Istio的初始化设置。

  用户利用Istio控制微服务通信,是通过向K8s提交CRD资源的方式完成的。Istio中的资源分为三组进行管理:

  3.2.1 networking.istio.io

    这一系列对象是使用频率最高的。流量管理是这一组对象完成的。

  virtualService是一个控制中心,功能是:定义一组组件,将符合该条件的流量按照在对象中配置的对应策略进行管理,最后将路由转到匹配的目标。

   应用场景:

(1)来自服务A版本1的服务,要访问服务B,则将路由指向服务B的版本2.

      (2)如果HTTP请求header中包含  “canary=true”, 则把服务目标指向服务Y的版本3,否则发给服务Y的版本2.

   (3)为从服务M到服务N的所有访问都加入延迟,以测试在网络状况不佳时的表现。

    下面列出流量管理的关键对象:

     1 Gateway:

        2 VirtualService

        3 TCP/TLS/HTTP Route

     4 DestinationWeight

     5 Destination

  3.2.2 config.istio.io

    其中的对象用于为Mixer组件提供配置,这个功能由大量的适配器完成的。

          Mixer对数据的处理过程:

    1 Rule: 是Mixer的入口,包含一个match成员和一个逻辑表达式。只有符合表达式的判断才会交给Acton处理。逻辑表达式中的变量被称为attribute(属性),

        其中的内容来自Envoy提交的数据。

       2 Action: 将符合入口标准的数据,在用什么方式加工后,交给哪个适配器进行处理。Action包含两个成员对象:一个是Instance,使用Template对接收到数据

                          进行处理;一个是Handler,代表一个适配器的实例,用于接收处理后的数据。

    3 Instance:为进入的数据选择一个模板,并在数据中抽取某些字段作为模板的参数,传输给模板进行处理。

    4 Adapter:是一个行为规范。

    5 Template: 对接受的数据进行再加工。

    6 Handler: 对Adapter进行实例化。

  3.2.3 authentication.istio.io

    用于定义认证策略。在网络级别、命名空间级别以及服务级别都提供了认证策略的要求。

          1 policy: 指定服务一级的认证策略,

    2 MeshPolicy:

  3.2.4 rbac.istio.io

    

  

  

第三章 Istio基本介绍的更多相关文章

  1. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-008-SpEL介绍

    一. 1.SpEL expressions are framed with  #{ ... } 2.SpEl的作用 Sp EL has a lot of tricks up its sleeves, ...

  2. 【转载】Java垃圾回收内存清理相关(虚拟机书第三章),GC日志的理解,CPU时间、墙钟时间的介绍

    主要看<深入理解Java虚拟机> 第三张 P84 开始是垃圾收集相关. 1. 1960年诞生于MIT的Lisp是第一门采用垃圾回收的语言. 2. 程序计数器.虚拟机栈.本地方法栈3个区域随 ...

  3. 第三章Android移植平台工具介绍

    第三章Android移植平台工具介绍 进行 Android 移植的学习并不一定需要一款 Android 手机,但必须要有一款主流的开发板,开发板是用来进行嵌入式系统开发的电路板,包括中央处理器.存储器 ...

  4. 精通Web Analytics 2.0 (5) 第三章:点击流分析的奇妙世界:指标

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第三章:点击流分析的奇妙世界:指标 新的Web Analytics 2.0心态:搞定它.新的闪亮系列工具:是的.准备好了吗?当然 ...

  5. 3-Spark高级数据分析-第三章 音乐推荐和Audioscrobbler数据集

    偏好是无法度量的. 相比其他的机器学习算法,推荐引擎的输出更直观,更容易理解. 接下来三章主要讲述Spark中主要的机器学习算法.其中一章围绕推荐引擎展开,主要介绍音乐推荐.在随后的章节中我们先介绍S ...

  6. KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册

    计算监控属性构造参考 计算监控属性可使用以下形式进行构造: ko.computed( evaluator [, targetObject, options] ) - 这种形式是创建一个计算监控属性最常 ...

  7. windows核心编程---第三章 内核对象及句柄本质

      本章讨论的是相对抽象的概念,不涉及任何具体的内核对象的细节而是讨论所有内核对象的共有特性. 首先让我们来了解一下什么是内核对象.内核对象通过API来创建,每个内核对象是一个数据结构,它对应一块内存 ...

  8. Laxcus大数据管理系统2.0(5)- 第三章 数据存取

    第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...

  9. 《驾驭Core Data》 第三章 数据建模

    本文由海水的味道编译整理,请勿转载,请勿用于商业用途.    当前版本号:0.1.2 第三章数据建模 Core Data栈配置好之后,接下来的工作就是设计对象图,在Core Data框架中,对象图被表 ...

随机推荐

  1. volatile关键字解析(二)

    volatile详解接下来,我们详细讲述一下volatile关键字volatile关键字具有两重语义 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这个新值对其他线程来说是 ...

  2. Hibernate常见配置详细解释

      <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1. ...

  3. python中继承和多态

    继承和多态 继承 引入继承 我们有这样一个需求 模仿英雄联盟定义两个英雄类 1.英雄要有昵称.攻击力.生命值属性 2.实例化出两个英雄对象 3.英雄之间可以互殴,被殴打的一方掉血,血量小于0则判断为死 ...

  4. HDU 3345

    http://acm.hdu.edu.cn/showproblem.php?pid=3345 最近重写usaco压力好大,每天写的都想吐.. 水一道bfs 注意的是开始旁边有敌人可以随便走,但是一旦开 ...

  5. OPEN(SAP) UI5 学习入门系列之四:更好的入门系列-官方Walkthrough

    好久没有更新了,实在不知道应该写一些什么内容,因为作为入门系列,实际上应该更多的是操作而不是理论,而在UI5 SDK中的EXPLORER里面有着各种控件的用法,所以在这里也没有必要再来一遍,还是看官方 ...

  6. threejs三角形Geometry的顶点时针顺序会导致三角形看不见

    var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75,winSize.width/winSize.hei ...

  7. 关于FreeMarker自定义TemplateDirectiveModel

    [转载来源:http://zwllxs.iteye.com/blog/2036826] java代码如下: import freemarker.core.Environment; import fre ...

  8. java分布式(一)

    分布式架构的演进 初始阶段架构 应用服务和数据服务分离阶段 使用缓存改善性能 使用应用服务器集群 数据库读写分离 反向代理和CDN加速 分布式文件系统和分布式数据库 使用NoSql和搜索引擎 业务拆分 ...

  9. 从BZOJ2242看数论基础算法:快速幂,gcd,exgcd,BSGS

    LINK 其实就是三个板子 1.快速幂 快速幂,通过把指数转化成二进制位来优化幂运算,基础知识 2.gcd和exgcd gcd就是所谓的辗转相除法,在这里用取模的形式体现出来 \(gcd(a,b)\) ...

  10. HTML CSS 表格换行禁止 超出指定长度自动截断

    word-break:keep-all; white-space:nowrap; overflow:hidden; min-width:30px; max-width:100px;