Istio新架构揭秘:环境化Mesh

5c22a1c6b73e5b40efbbe81648bc903b.png

自问世以来,Istio因其使用Sidecar(可编程代理与应用容器一同部署)而备受认可。这种架构选择使Istio用户能够享受其好处,而无需对其应用进行 drast 改变。这些可编程代理,与应用容器紧密部署在一起,因其能够引入Istio的诸多好处而备受赞誉,同时又无需对应用进行重大更改。但总有改进的空间,现在Istio引入了环境化Mesh,这是其架构的重大演进。

Sidecar模型:优势和限制

dfef940319a14669930646eabc85174b.png

1*jBu7mQInMfOZPGvBUJ9J1g.gif

传统Istio模型:

•Istio在工作负载的Pod中部署Envoy代理作为Sidecar。

Sidecar的优势:

•无需重构应用即可享受Istio的功能。

Sidecar的限制:

1.侵入性: Sidecar需要集成到应用中,影响其Kubernetes Pod规格并重定向Pod流量。这经常导致需要重启应用Pod。2.资源利用不足: 由于每个Sidecar代理专门分配给其配对的工作负载,资源分配可能导致集群效率低下。3.流量中断: Istio的Sidecar可能对一些应用的流量捕获和HTTP处理造成问题。

环境化Mesh:克服限制

环境化Mesh采用分层方法,分割了Istio的功能:

1.基础层: 一个安全的覆盖层,负责路由和确保流量的零信任安全。2.上层: 当用户需要访问Istio的广泛功能时,可以启用L7处理,而无需改变应用Pod。

这种方法的优势包括:

•允许逐步采用Istio:从无Mesh -> 安全覆盖层 -> 完整的L7处理。•在不同环境模式或带有Sidecar的工作负载之间实现兼容性。

环境化Mesh的工作原理

•在Kubernetes集群的每个节点上都有一个共享代理(ztunnel),负责Mesh内的安全连接。

7598ec71a18711a88b23c93354cfe2c0.png

•Ztunnel仅处理L4流量,将Istio的数据平面与应用关注点分离。•当命名空间激活环境化模式时,将建立一个零信任覆盖层(具有mTLS、遥测、认证和L4授权)。•对于L7功能,命名空间可以部署一个或多个基于Envoy的Waypoint代理。这些代理可以根据实时流量需求进行自动缩放。

de2102d61014ed99a51cd0191f2d8691.png

安装环境化Mesh

•下载Istio的最新版本,其中包含对环境化Mesh的alpha支持。•安装Kubernetes网关CRDs,在大多数Kubernetes集群上默认未安装

kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.8.0" | kubectl apply -f -; }

ambient配置文件旨在帮助您开始使用环境化Mesh。使用上面下载的istioctl命令,在您的Kubernetes集群上安装带有ambient配置文件的Istio:

istioctl install --set profile=ambient --set "components.ingressGateways[0].enabled=true" --set "components.ingressGateways[0].name=istio-ingressgateway" --skip-confirmation

✔ 安装了Istio核心

✔ 安装了Istiod

✔ 安装了CNI

✔ 安装了入口网关

✔ 安装了Ztunnel

✔ 安装完成

•使用以下命令验证已安装的组件:

kubectl get pods -n istio-system名称                                     就绪   状态     重启次数   年龄istio-cni-node-n9tcd                     1/1    运行中   0          57秒istio-ingressgateway-5b79b5bb88-897lp    1/1    运行中   0          57秒istiod-69d4d646cd-26cth                  1/1    运行中   0          67秒ztunnel-lr7lz                            1/1    运行中   0          69秒kubectl get daemonset -n istio-system名称              预期   当前   就绪   最新   可用   节点选择器           年龄istio-cni-node    1      1      1     1      1      kubernetes.io/os=linux   70秒ztunnel            1      1      1     1      1      kubernetes.io/os=linux   82秒

安全考虑

环境化Mesh将安全性放在首位:

1.Ztunnel:

尽管是一个共享资源,但ztunnel将其密钥限制在其节点上的工作负载上,降低风险。

1.Waypoint代理: 这些共享资源被限制在一个服务账户中,减少了来自受损代理的潜在伤害。2.Envoy的作用: 凭借其强大、经过考验的特性,Envoy被认为比它配对的许多应用更安全。

性能和资源影响

1.资源效率: 环境化Mesh的ztunnel减少了每个工作负载的预留资源。Waypoint代理的动态扩展也确保了资源优化。2.延迟问题: 虽然有一种看法认为Waypoint代理可能引入延迟,但Istio认为这能够通过与传统Sidecar模型相比减少的L7处理来平衡。

Sidecar的未来

环境化Mesh的推出并不意味着Sidecar的结束。它们仍然适用于需要专用数据平面资源的情景,比如合规性或性能调整。Istio将继续支持Sidecar,确保它们与环境化Mesh和谐共存。

总之,环境化Mesh代表了服务网格架构迈出的一大步,解决了Sidecar模型的一些挑战,并为用户提供了更多的灵活性和效率。


  • 系统设计概念系列文章

计算机的层次化架构

每个开发者都应该知道的7个原则

6个系统设计的基本概念

数据库:系统设计的核心

  • 图解系列

系统设计中的缓存技术:完整指南

关系数据库的全景图 

Redis 全景解析

当然架构设计、全景图解系列还有很多,快来关注一起学习吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CC++枚举类型与类型定义(typedef)

在C中,枚举类型(enum)和类型定义(typedef)都是用来为数据类型创建别名的机制。它们可以提高代码的可读性和维护性。 枚举类型(enum) 枚举类型是一种用户自定义的数据类型,用于定义…

java学习part27线程死锁

基本就是操作系统的内容 138-多线程-线程安全的懒汉式_死锁_ReentrantLock的使用_哔哩哔哩_bilibili

【大模型】更强的 ChatGLM3-6B 来了,开源可商用

【大模型】更强的 ChatGLM3-6B 来了,开源可商用 简介ChatGLM3-6B 环境配置环境搭建安装依赖 代码及模型权重拉取拉取 ChatGLM3-6B拉取 ChatGLM3-6B 模型权重及代码 终端测试网页测试安装 gradio加载模型并启动服务 参考 简介 ChatGLM3-6B ChatGLM3-6B 是 ChatGLM …

总结 SpringMVC 中的常用注解和用法

RequestMapping ??是?Spring?Web?MVC?应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的 路由映射的.? 表⽰服务收到请求时,?路径为?/sayHi?的请求就会调⽤?sayHi?这个⽅法的代码.?? 路由映射:?当⽤⼾访问⼀个?URL?时,?将⽤⼾的请求对应到程序中…

thinkphp控制器调用脚本

一、同步方式 //脚本配置示例protected function configure(){// 指令配置$this->setName(pltUpgrade)->addArgument(type, Argument::OPTIONAL, your type)->addOption(id, null, Option::VALUE_REQUIRED, upgrade id)->setDescription(PltUpgrade);}// 调用命令行…

基于STM32的四轴飞行器的控制系统(论文+源码)

1.系统设计 本次基于stm32单片机的四轴飞行器控制系统主要包括硬件和软件这两大部分,其中硬件部分是基于单片机的四轴飞行器控制系统实现的基石,其中主要STM32单片机负责整个系统功能的实现;NRF24L01无线模块负责对四轴飞行器的远程控制&…

rtmp 协议详解

1. handshake 1.1 概述 rtmp 连接从握手开始。它包含三个固定大小的块。客户端发送的三个块命名为 C0,C1,C2;服务端发送的三个块命名为 S0,S1,S2。 握手序列: 客户端通过发送 C0 和 C1 消息来启动握手过程。客户端必须接收到 S1 消息,然后…

MS721仪表总线收发器可Pin to Pin兼容TSS721A

MS721 是为 M-Bus 标准(EN1434-3)的应用而开发的单片收发电路。MS721 接口电路可以适应从站与主站之间的电压差,总线的连接没有极性要求,电路由主站通过总线供电,这样对于从站电池就不会增加额外的负载,同时…

轻量级万物分割SAM模型——MobileSAM安装实测摘要

目录 0、前言1、准备工作安装python环境说明安装说明 运行测试app安装依赖修改代码 2、实际测试效果自带图片测试其它图片测试1其它图片测试2 总结 0、前言 本文将介绍一种轻量级万物分割SAM模型——MobileSAM的安装和实测情况。SAM是meta公司的一种图像分割大模型&#xff0c…

二分+dp:[ARC120E] 1D Party

https://www.luogu.com.cn/problem/AT_arc120_e 考虑二分时间,然后设 d p ( i , 0 ) dp(i,0) dp(i,0) 表示第 i i i 个人开头往左走,掉头后剩余步数。 d p ( i , 1 ) dp(i,1) dp(i,1) 表示第 i i i 个人先往右走,最多走多少步就有掉头。 …

css中的 Grid 布局

flex布局和grid布局区别 flex布局是 一维布局grid布局是二维布局 flex布局示例 grid布局示例 grid 布局初体验 体验地址 <div class"wrapper"><div class"one item">One</div><div class"two item">Two</div&…

Asp.net core WebApi 配置自定义swaggerUI和中文注释,Jwt Bearer配置

1.创建asp.net core webApi项目 默认会引入swagger的Nuget包 <PackageReference Include"Swashbuckle.AspNetCore" Version"6.2.3" />2.配置基本信息和中文注释&#xff08;默认是没有中文注释的&#xff09; 2.1创建一个新的controller using Micr…

开源堡垒机Jumpserver

文章目录 开源堡垒机JumpserverJumpserver介绍安装环境部署安装jumpserver访问jumpserver的web界面 开源堡垒机Jumpserver Jumpserver介绍 Jumpserver 是全球首款完全开源的堡垒机&#xff0c;使用 GNU GPL v2.0 开源协议&#xff0c;是符合 4A 的运维安全审计系统。 Jumpse…

一、个人博客搭建保姆级教程-总篇

前言 首先说明一下&#xff0c;我们这套教程主要部署的是静态网页&#xff0c;即不涉及到JavaWeb、ASP.Net这些框架。直接使用nginx托管静态网页。 主要面向的是不希望花太多时间在搭建个人博客上的小伙伴、以及非程序员的小伙伴。 前置知识 当然了&#xff0c;搭建需要一些…

项目代码规范

Web端代码规范 Vue项目代码规范 一、命名规范 1、项目名 全部采用小驼峰命名式&#xff0c;例&#xff1a;camelCase&#xff08;小驼峰式命名法 —— 首字母小写&#xff09; 2、目录名 参照项目命名规则&#xff0c;有复数结构时&#xff0c;要采用复数命名法。例&#xff…

J-LINK J-FLASH 下载STM32单片机程序使用教程

J-LINK J-FLASH 下载STM32单片机程序使用教程 Chapter1 J-LINK J-FLASH 下载STM32单片机程序使用教程1.安装提供的 JLINK驱动程序2. 点击打开 J-Flash V7.223.点击 create a new project.&#xff08;使用后可以在软件菜单File保存这个烧写工程&#xff0c;后续直接打开使用即可…

SHAP(四):NHANES I 生存模型

SHAP&#xff08;四&#xff09;&#xff1a;NHANES I 生存模型 这是一个 Cox 比例风险模型&#xff0c;基于来自 NHANES I 的数据以及来自 NHANES I 流行病学随访研究。 它旨在说明 SHAP 值如何能够以传统上仅由线性模型提供的清晰度解释 XGBoost 模型。 我们在数据中看到有趣…

Spring---Bean的作用域和生命周期

文章目录 Bean的作用域Bean的六种作用域设置Bean的作用域 Bean的生命周期Bean&#xff08;Spring&#xff09;的执行流程Bean的生命周期 Bean的作用域 我们通过一个例子来认识 Bean 的作用域&#xff1a; 假设现在有一个公共的 Bean 对象提供给用户A和用户B使用&#xff0c;然…

第9课 任务创建、删除和API函数

第9课 任务创建、删除和API函数 任务创建和删除本质是调用FreeRTOS的API函数 API函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务xTaskDelete()删除任务 动态创建任务&#xff1a; 任务的任务控制块以及任务的栈空间所需的内存&#xff0c;均由…

JOSEF约瑟时间继电器ARTD-DC110V-2H2D 0.25-2.5s导轨安装

ARTD系列断电延时继电器&#xff1a; ARTD-220VDC-1H1D断电延时继电器&#xff1b;ARTD-220VDC-2H断电延时继电器&#xff1b; ARTD-220VDC-2H2D断电延时继电器&#xff1b;ARTD-220VDC-4H断电延时继电器&#xff1b; ARTD-110VDC-1H1D断电延时继电器&#xff1b;ARTD-110VD…