一、Istio的工作机制

Istio分为控制面和数据面.
控制面包含Pilot,Mixer,Citadel
数据面由伴随每个应用程序部署的代理程序Envoy组成.

1、自动注入
在创建应用程序时自动注入Sidecar代理.在K8s场景下创建pod时,kube-API server调用管理面组件的Sidecar-Injector服务,自动修改应用程序的描述信息并注入Sidecar.在真正创建pod时,在创建业务容器的同时在pod中创建sidecar容器.

2、流量拦截
在pod初始化时设置iptables规则,当有流量到来时,给予配置的iptables规则拦截业务容器的Inbound流量和outbound流量到sidecar上,应用程序感知不到sidecar的存在,还以原本的方式进行互相访问,

3、服务发现
服务发起方的Envoy调用管理面组件Pilot的服务发现接口获取目标服务的 实例列表.

4、负载均衡
服务发起方的envoy根据pilot中配置的负载均衡策略选择服务实例。
上图中:数据面的各个envoy从pilot中获取forcecast服务的负载均衡配置,并执行负载均衡动作

5)流量治理
envoy从pilot中获取配置的流量规则,在拦截到inbound和outbound流量时执行治理逻辑。
上图中:fronted服务侧的envoy从pilot中获取流量治理规则,并根据流量治理规则将不同特征的流量分发到forecats的v1和v2版本。

6)访问安全
在服务间访问时通过双方的envoy进行双向认证和通道加密,并基于服务的身份进行授权管理
上图中:pilot下发安全相关配置,在fronted和forecast服务上的envoy上自动加载证书和秘钥来实现双向认证。证书和秘钥由citadel来维护。
7)服务遥测
服务间通信时,通信双方的envoy都会连接管理面组件mixer上报访问数据,并通过mixer将数据转发给对应的监控后端。
如上图:fronted服务队forecast服务的访问监控指标、日志和调用链都通过该方式手机到对应的监控后端。
8)策略执行
进行服务访问时,通过mixer连接后端服务来控制服务间的访问,判断对服务房型还是拒绝。
上图中:mixer可以对接一个限流服务对fronted服务到forecast服务的访问进行速率控制。
9)外部访问
网格的入口有一个envoy扮演入口网关的角色。
上图中:外部服务通过gateway访问入口服务fronted,对fronted服务的负载均衡、治理策略都在该gateway上执行。

每个过程都可以进行如下抽象:服务调用双方的envoy代理拦截流量,并根据管理面的相关配置执行对应的治理动作。

二、Istio的服务模型

1、Istio的服务
逻辑上:服务是istio主要管理的资源对象,包括域名和端口列表等属性;每个端口包含端口名称、端口号和端口的协议。不同协议有不同的内容,在istio中也有不同的治理规则。

物理层面:服务的存在形式就是k8s的service,只要满足了上述约束条件,就可以转换为istio的service并配置规则进行流量治理。

2、Service
k8s中:service通过一个域名或虚拟ip和port保证了服务地址是不变的,也无需暴露k8s中pod的端口和地址。

k8s的service的定义

apiVersion: v1
kind: Service
metadata:name: forecast
spec:ports:- port: 8081 #指定service的虚拟端口号targetPort: 8080 #对应到Pod容器的8080端口selector: app: forecast #对应到拥有label(app=webapp)的Pod

istio的service与k8s的区别在于:要满足istio的服务约束,如在端口名称上指定协议。如下(唯一区别是指定了协议为http):

apiVersion: v1
kind: Service
metadata:name: forecast
spec:ports:- port: 8081 #指定service的虚拟端口号targetPort: 8080 #对应到Pod容器的8080端口name: httpselector: app: forecast #对应到拥有label(app=webapp)的Pod

在kubernetes中,一般先通过Deployment创建工作负载,在通过创建Service关联这些工作负载,从而暴露这些工作负载的接口,
在Istio中,Service是治理的对象,是Istio的核心管理实体,提供了对外访问能力的执行体,是istio服务的元数据。

三、Istio的服务版本

Istio可以进行灰度 发布,将一个Service关联到多个Deployment,每个Deployment都对应服务的一个版本.

说明:
1)两个deployment都有相同的app:forecast标签,该标签和service的标签选择器一致,所以service能关联到这两个deployment对应的Pod。

2)两个deployment有不同的镜像版本,各自创建的Pod也不相同。version标签不同,分别是v1和v2

四、Istio的服务实例

istio的service对应k8s的service;
istio的服务实例对应k8s的endpoints
k8s的endpoints对象名称和service对应名称相同,是:列表。负责维护Service后端pod的变化.

Istio系列学习(二)----Istio架构相关推荐

  1. Istio系列学习(八)----Istio的目标规则:DestinationRule

    一.destinationRule 和 VirtualService的联系和区别 1)两者之间的关系 在讲解virtualService中,路由目标对象destination中会包含Service子集 ...

  2. 【云原生 | 从零开始学istio】二、Istio核心特性与架构

    istio核心特性 Istio 核心特性 断路器 超时 重试 多路由规则 Istio 架构 写在最后 Istio 核心特性 1.流控(traffic management) 断路器(circuit b ...

  3. istio功能介绍(二.Istio使用说明)

    文章目录 流量治理 使用istio的注意事项 istio的流量治理流程 VirtualService路由规则配置 HttpRoute HTTPRoute的匹配规则 1.HttpRoute的路由目标 2 ...

  4. idou老师教你学Istio 04:Istio性能及扩展性介绍

    Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要 ...

  5. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  6. motan学习笔记 二 motan架构分析

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  7. 软件开发随笔系列二——关于架构和模型

    软件开发随笔系列二--关于架构和模型 文章目录 软件开发随笔系列二--关于架构和模型 软件模型 功能模型 概念层 边界 参与方 分组分类 逻辑层 功能组织图 层次.模块化 接口 流程模型 概念层 业务 ...

  8. iris-v12 框架搭建二 mvc架构

    iris-v12 框架搭建二 mvc架构 在这里我就默认你已经会了搭建非mvc架构的方法(不懂得看iris-v12 框架搭建一 快速启动). 想要搭建mvc的架构非常简单,只要使用iris的mvc包就 ...

  9. 【总结】我的十二个架构设计原则

    谨记 没有最好的架构,只有最适合的架构 好的架构不是设计出来的,是演进变化而来的 每一位架构师,在做架构设计时,都或多或少地会有一些自己架构设计原则.这里和你分享一些过去一直指导我的一些架构设计原则, ...

最新文章

  1. 360p4虚拟服务器,360安全路由p4c常见的问题以及解决方法介绍
  2. java book打印机_Java调用打印机进行打印
  3. 开发日记-20190913 关键词 汇编语言王爽版 第一章
  4. 【攻防世界015】notsequence
  5. 基于tensorflow2.0利用CNN与线性回归两种方法实现手写数字识别
  6. mysql 数据库表锁死_mysql 数据库表被锁住了_Mysql数据库表锁死如何处理?
  7. mysql授权远程访问
  8. HOJ 2275 Number sequence
  9. 博弈论与逻辑思维(传教士与妻子忠贞的问题)
  10. 【PAT乙】1004 成绩排名 (20分) struct结构
  11. Confluence或JIRA验证码乱码的问题
  12. You have to specify ‘-keep‘ options for the shrinking step
  13. Drillbeach---第二章 Drillbench 5.1 Dynaflodrill 用户指南
  14. Centos8 硬盘扩容
  15. 汽车车载智能终端T-BOX
  16. 前端-项目引入苹方字体
  17. 【BZOJ3831】[Poi2014]Little Bird 单调队列
  18. Windows10系统下电脑时间不对,怎么办?
  19. 502粘到手上变硬了怎么办_手指被502粘住了?别硬扯,教你2招,胶水自动融化...
  20. PCB板布线经验~~

热门文章

  1. iptables详解(转)
  2. C#关于NameValueCollection,Dictionary,List Tuple比较
  3. 微机原理复试面试(二)
  4. 前端测试开发工具--mock 的使用
  5. 解决VSCode空格只占半个字符宽度
  6. 深度学习模型模拟大脑地形图,有助于回答大脑不同部分如何协同工作
  7. 上市首日暴涨300%,快手市值杀入万亿阵营!
  8. from . import *(*是指模块名)具体代表的意思
  9. 图片怎么去底色变透明?怎么把图片变透明背景?
  10. 重视!我国儿童青少年近视患病率已超60%,低龄触网严重、睡眠不足 | 美通社头条...