Istio的架构概述

Istio的工作机制

首先整个Istio的工作机制和架构主要分为控制面和数据面两个部分,控制面包括Pilot、Mixer、Citadel等服务组件,数据面则是由应用程序部署的代理程序Envoy组成。
大概表述一下全体流程:

  • 自动注入:当创建应用程序时,自动注入Sidecar代理。再Kubernetes创建Pod时,Kube-apiserver调用管理面组件Sidecar-Injector服务,自动修改应用程序的描述信息,并注入Sidecar,也就是说在创建业务容器的时候不仅仅创建了单个容器,还创建了一个附属容器Sidecar。
  • 流量拦截:在创建Pod后,初始化iptables规则时,基于配置的iptables规则将拦截业务容器的Inbound和Outbound到附属的Sidecar上。在Pod与Pod之间的访问都会通过各自的Sidecar进行通信。
  • 服务发现:服务发起方的Envoy调用管理面组件Pilot的服务发现接口获取目标服务的实例列表。
  • 负载均衡:当新建的业务容器发起服务请求的时候,其搭载的Envoy会根据配置的负载均衡策略选择服务实例,并且连接对应的实例地址。
  • 流量治理:当Envoy从Pilot中获取到配置的流量规则,在连接到的Inbound流量和Outbound流量是执行治理逻辑。根据流量治理规则,将不同特征的流量分发到不同的容器上。
  • 访问安全:在服务间访问时通过双方的Envoy进行双向认证合同到加密,并给予服务的身份进行授权管理,其中的证书和密钥由管理面中的组件Citadel维护。
  • 服务遥测:在服务之间通信的时候,双方的Envoy都会连接到管理面组件Mixer上报访问数据,并通过Mixer将数据转发给对应的监控后端。
  • 策略执行:在进行服务访问的时候,通过Mixer连接后端服务来控制服务间的访问,判断对该访问方形还是拒绝。
  • 外部访问:在网格的入口处有一个Envoy扮演的入口网关的角色,外部服务只能通过这个Gateway访问网格内的服务,并且执行负载均衡和流量治理的策略。
    总结:服务调用双方的Envoy代理拦截流量,并根据管理面的相关配置执行相应的治理动作。

Istio的主要组件

Istio-pilot

Istio-pilot是Istio的控制中枢Pilot,Pilot直接从运行平台提取数据并将其构造和转换成Istio的服务发现模型,因此Pilot只有服务发现功能,无需进行服务注册。除了服务发现,其更加重要的的功能是向数据面下发规则,例如VirtualService、DestinationRule、Gateway、ServiceEntry等流量治理规则,也包含认证授权等安全规则。
Pilot负责将各种规则转换成Envoy可识别的格式,通过标准的xDS协议发送给Envoy,指导Envoy完成动作。在通信上,Envoy通过gRPC流式订阅Pilot的配置资源。

Istio-telemetry

Istio-telemetry是专门用于收集遥测数据的Mixer服务组件。当网格中的两个服务间有调用发生时,服务的代理Envoy就会上报遥测数据给Istio-telemetry服务组件,Istio-telemetry服务组件则根据配置将生成访问Metric等数据分发给后端的遥测服务。数据面代理通过Report接口上报数据时访问数据会被批量上报。

Istio-policy

Istio-policy是另外一个Mixer服务,和Istio-telemetry基本上是完全相同的机制和流程。数据面再转发服务的请求前调用Istio-policy的Check接口检查是否允许访问,Mixer根据配置将请求转发到对应的Adpter做对应检查,给代理返回允许访问还是拒绝访问。可以对接如配额、授权、黑白名单等不同的控制后端,对付物件的访问进行可扩展的控制。

Istio-citadel

Istio-citadel是Istio的核心安全组件,提供了自动生成、分发、轮换与撤销密钥和证书功能。Citadel一直监听Kube-apiserver,以Secret的形式为每个服务都生成证书密钥,并在Pod创建时挂载到Pod上,代理容器使用这些文件来做服务身份认证,进而代理两端服务实现双向TLS认证,通道加密、访问授权等安全功能,这样用户就不用再代码中维护证书密钥。

Istio-galley

Istio-galley并不直接想数据面提供业务能力,而是在控制面上向其他组件提供支持。Galley作为负责配置管理的组件,验证配置信息的格式和内容的正确性,并将这些配置信息提供给管理面的Pilot和Mixer服务使用,这样其他管理面组件只永和Gally交互,从而达到和底层平台解耦。

Istio-sidecat-injector

Istio-sidecat-injector负责自动注入的组件,只要开启了自动注入,再Pod创建时就会自动调用Istio-sidecat-injector向Pod中注入sidecar容器。
再Kubernetes环境中,根据自动注入配置,Kube-apiserver拦截到创建Pod的请求时,会调用自动注入
服务Istio-sidecat-injector生成的Sidecar容器的描述并将其插入原Pod的定义中,这样在创建Pod时不仅仅包含了业务容器,还包括了Sider容器。

Istio-ingressgateway

Istio-ingressgateway是一个Gateway,从网格外访问网格内的服务就是通过Gateway进行的。是一个Loadbalancer类型的Service,并且开放了一组端口,这些就是网格内服务的外部访问端口。

Istio的架构概述相关推荐

  1. 05-【istio】-【istio介绍】istio的架构

    参考文章:<云原生服务网格Istio>第2章 Istio架构概述 - 云+社区 - 腾讯云 一.istio的架构 服务网格(istio是服务网格的一个产品)由两部分组成:数据平面.控制平面 ...

  2. 1小时学会:最简单的iOS直播推流(二)代码架构概述

    最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源 ...

  3. NR 5G 安全架构概述

    安全架构概述 安全域 安全体系结构概述 该图说明了以下安全域: 网络接入安全性(I):一组安全功能,使UE能够安全地通过网络进行身份验证和接入服务,包括3GPP接入和非3GPP 接入,特别是防止对(无 ...

  4. Istio分层架构?80%的人有误解

    前篇: <ServiceMesh究竟解决什么问题> <什么是Istio,ServiceMesh最流行落地> Istio是ServiceMesh的产品化落地: 它帮助微服务之间建 ...

  5. Service Mesh 最火项目 Istio 分层架构,你真的了解吗?

    作者 | 王夕宁  阿里巴巴高级技术专家 参与"阿里巴巴云原生"公众号文末留言互动,即有机会获得赠书福利! 本文摘自于由阿里云高级技术专家王夕宁撰写的<Istio 服务网格技 ...

  6. netty系列之:netty架构概述

    文章目录 简介 netty架构图 丰富的Buffer数据机构 零拷贝 统一的API 事件驱动 其他优秀的特性 总结 简介 Netty为什么这么优秀,它在JDK本身的NIO基础上又做了什么改进呢?它的架 ...

  7. Java生鲜电商平台-微服务架构概述

    Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化 ...

  8. Nvidia CUDA初级教程4 GPU体系架构概述

    Nvidia CUDA初级教程4 GPU体系架构概述 视频:https://www.bilibili.com/video/BV1kx411m7Fk?p=5 讲师:周斌 本节内容: 为什么需要GPU 三 ...

  9. LAMP+LNMP(一) LAMP架构概述

    一.LAMP架构概述 LAMP就是 Linux.Apache(httpd).MySQL.PHP四个东东的统称,我们常见的大部分网站都是由这个体系提供的,比如google.Taobao.51CTO等等. ...

最新文章

  1. MP3Player(附源码)
  2. C语言学习之猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
  3. 坐标北京,Paddle Lite​ 线下交流会,助力算法落地​
  4. javac参数 编译警告关闭_JVM之JIT即时编译
  5. AVR 定点数运算程序设计及数制转换
  6. matlab运行时风扇,TCFD和CAESES耦合优化案例-轴流风扇
  7. 部署AIX nmon监控脚本
  8. SQL读书笔记SQL操作语句
  9. Qt制作年会抽奖一界面
  10. C在mac上用不了malloc.h头文件的解决方法
  11. Python词云图:指定形状、颜色和字体
  12. matlab画漫画,震惊!无聊男子竟用函数画出可爱的卡通猫
  13. 【南宋】【文天祥】正气歌
  14. Third season twenty-third episode,Ross‘s thing on his butt???
  15. Centos7配置ssh、rsh免密互信集群服务
  16. 【阿里云】短信服务 无认证 测试版本 附带短信发送工具类
  17. 扑捉和捕捉的区别照相_摄影,为的就是捕捉那一瞬间
  18. python 选座位助手
  19. BugReport:前端不能成功解析后端信息造成消息阻塞问题
  20. 怎样看待程序员驻场?

热门文章

  1. Java IDE推荐
  2. 图神经网络(1):DGL基础
  3. 单芯片的人脸掌静脉识别
  4. 数据结构算法之---顺序表逆置
  5. 河北专接本计算机2020年真题,2020年河北专接本考试公共课数(一)真题.pdf
  6. 浪潮虚拟化服务器参数,浪潮英特尔首发四核服务器虚拟化应用标准
  7. 【JS】三十行代码实现洗牌效果
  8. java 父类转换成子类的方法
  9. 晓说 最后一期收官作,高晓松推荐的必读书《万寿寺》《百年孤独》...《枢纽》...
  10. 语音自监督预训练模型 CNN Encoder 调研总结