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. ionic安装插件常用命令

    常见插件查找网站: http://ngcordova.com/docs/plugins http://cordova.apache.org/plugins/ $ ionic plugin list / ...

  2. for循环打印等腰三角形、直角三角形、菱形

    一.等腰三角形 package s1; import java.util.Scanner; public class C31 { public static void main(String[] ar ...

  3. Java多线程编程实战指南(核心篇)读书笔记(五)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  4. Android响应式UI教程

    原文:Responsive UI Tutorial for Android 作者:James Nocentini 译者:kmyhy 2017/5/4 更新说明: 由 James Nocentini 更 ...

  5. JDK 1.8之 HashMap 源码分析

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/75579654 构造函数 Node hash put treeifyBin get re ...

  6. 我也说说Emacs吧(5) - 基本编辑操作

    基本编辑操作 进入编辑模式 标准的emacs用户是遇不到这一节的,因为默认就可以编辑.但是spacemacs用户需要先学习一下强大的vi的模式切换功能了. vi的一个重要特点就是命令特别多,所以一旦学 ...

  7. C# ListBox 子项数据更新

    今天在倒腾ListBox控件的数据编辑时,遇到了一个小小的问题,现在就把解决方法记录下来,如果各位道友有更好的方法,一定要留言赐教. 问题还原: 有一个界面,有这么一个ListBox用来显示所有的角色 ...

  8. 369C Valera and Elections

    http://codeforces.com/problemset/problem/369/C 树的遍历,dfs搜一下,从根节点搜到每个分叉末尾,记录一下路况,如果有需要修复的,就把分叉末尾的节点加入答 ...

  9. 拷贝ssh公钥到多台服务器上

    这篇文章几乎是对Push SSH public keys to multiple host的翻译,谢谢该作者. 使用SSH登陆.执行命令到远程机器需要输入密码,很多系统需要免输密码访问远程机器,比如h ...

  10. CF1114F Please, another Queries on Array?

    CF1114F Please, another Queries on Array? 考虑用线段树维护取模后的区间积和真正的区间积所含有的质因子. 每次询问查得这两个值后,一乘一除,即可算出该区间积的欧 ...