早上好,我是 Istio 1.1
1性能增强
虽然Istio1.0的目标是生产可用,但从去年7月份发布以来,在性能和稳定性上并不能让用户满意。社区的Performance and Scalability工作组在Istio v1.1中做了大量的努力以提高控制面和数据面的性能,其中最明显的性能增强包括:
Sidecar API,减少发给proxy的配置数量以及pilot负载。
网络配置规则(Destinationrule,Virtualservie, ServiceEntry)中增加的 exportTo字段限制配置的可见范围。
Envoy默认收集的统计数据大量减少。
给mixer增加load-shedding功能,防止overload。
提升envoy和mixer之间的交互协议。
可配置并发线程数,提高吞吐量。
可配置filter来约束mixer遥测数据。
从对Istio 1.1的测试数据来看,这部分工作取得了显著的效果。
1.1控制面性能表现
Pilot的CPU和内存使用受网格内的配置和系统状态的影响,例如负载变化速率,配置变化速率,连接到Pilot的proxy的数量等。可以通过增加Pilot的实例数来减少配置分发处理的时间,提高性能。
在网格内有1000个服务,2000 个sidecars,每秒1000请求下的表现:
单Pilot 实例使用 1 vCPU 和1.5 GB 的内存。
istio-telemetry服务使用0.6 vCPU。
1.2数据面性能表现
CPU:proxy在每秒1000个请求下大约消耗0.6 vCPU 。
内存:proxy的内存消耗主要取决于它需要处理的配置数量,大量的listeners, clusters, and routes配置会增加内存使用。proxy每秒1000个请求下大约消耗50MB的内存。
时延:数据在传输时会通过客户端和服务端的sidecar,传输路径上的这两个proxy在1000 rps情况下,99%的请求时延是10 ms(TP99),单独server端的proxy增加6ms的时延。如果启用策略会进一步增加时延。
2多集群方案
在1.0中只提供了一种基于扁平网络的多集群方案:Istio控制面部署在一个Kubernetes集群中。这种方案要求各集群的 Pod 地址不能重叠,且所有的 Kubernetes 控制平面API Server 互通。看上去就是物理上把多个Kubernetes并到一个Istio控制面下,在Istio看来是同一个网格。这种方案的网络要求苛刻,实际应用并不多。
在新发布的1.1版本上,多集群上做了非常多的增强,除了保留1.0扁平网络作为一种单控制面的方案外,还提出了另外两种方案供用户根据实际环境和需求灵活选择,这两种方案都不要求是扁平网络:
多控制面方案:在每个集群中安装完整的Istio控制面,可以看成是一种松散的联邦,集群间服务在Gateway处联通即可。通过一个全局的DNS将跨集群的请求路由到另外一个集群里去。这种集群的访问是基于Istio的ServiceEntry和Gateway来实现的,配置较多且复杂,需用户自己维护。
一种集群感知(Split Horizon EDS)的单控制面方案:Istio控制面板只在一个Kubernetes集群中安装,Istio控制面仍然需要连接所有Kubernetes集群的Kube API Server。每个集群都有集群标识和网络标识。在服务间访问时,如果目标是本集群的负载,则类似单集群的方式直接转发;如果是其他集群的实例,则将流量转发到集群的入口网关上,再经过网关转发给实际对端。
3安全
3.1HTTP Readiness Liveness Probe自动重写
mTLS模式下,进入Envoy的HTTP请求会在TLS握手阶段被拒绝。1.1新增加了HTTP Probe的自动重写,通过将HTTP Probe请求发送到pilot-agent由其转发HTTP探测到应用,进而绕开Envoy的TLS认证。默认自动重写是关闭状态,用户需要根据实际需要打开。
3.2集群级别的RBAC设置ClusterRbacConfig
RbacConfig被标记为废弃,用户升级1.1后,必须迁移到使用ClusterRbacConfig。因为RbacConfig有bug,在一些情况下,其作用范围会被缩小到命名空间。
3.3SDS
SDS(SecretDiscovery Service)通过节点密钥生成提供更强的安全性以及动态的证书回滚。可以取代目前使用secret卷挂载的方式提供证书。1.1中目前为alpha,不建议生产环境使用,但是随着Istio发展值得期待。
3.4授权
新增对TCP类型服务的RBAC授权以及基于用户组的授权。
3.5Vault集成
允许用户集成开源Vault,使用Vault CA签发证书。
4网络
4.1新的sidecar API资源
在1.1中引入Sidecar这资源对象可以更精细的控制Envoy转发和接收的端口、协议。在指定命名空间中使用sidecar资源时,支持定义可访问的服务范围。这样可以降低发给proxy的配置的数量。在大规模的集群中,我们推荐给每个namespace增加sidecar的对象。 这个功能主要是为了提升性能,减轻pilot计算的负担。对proxy的影响是:1. 内存占用少,2. 降低网络带宽占用。
4.2exportTo
在Istio1.1版本中添加了一个重要字段exportTo。用于控制VirtualService、DestinationRule和 ServiceEntry 跨Namespace的可见性。这样就可以控制一个Namespace下定义的资源对象是否可以被其他Namespace下的Envoy执行了。如果未赋值,则默认全局可见。当前版本中只支持“.”和“*”两种配置。
“.”表示仅应用到当前Namespace。
“*”表示应用到所有Namespace。
4.3Locality based loadbalancer
Istio 1.1 引入了负载均衡新特性:基于位置的负载均衡。这也是华为主导的新特性。目前是alpha特性,只支持服务网格全局的位置感知的负载均衡设置:
基于位置权重的负载均衡设置(Locality-weighted load balancing):
Locality-weighted load balancing允许管理员基于流量来源及终止的位置信息控制流量的分发。例如可以设置从源位置{region}/{zone}/{sub-zone}的工作负载发出的流量转发到目的位置的endpoints负载均衡权重:用户可以为相同区域的工作负载访问设置较高的权重,为不同区域的工作负载设置较小的权重,减少网络延迟。
基于位置的故障转移设置:
类似于Envoy的“Zone aware routing”负载均衡策略,基于位置的故障转移特性,通过为不同的位置的endpoints设置不同的优先级,控制流量的转发策略。默认设置如下,同一位置{region}/{zone}/{sub-zone}的endpoints优先级最高,同一{region}/{zone}的endpoints优先级次之,同一region的endpoints第三,最后故障转移设置区域以及其他区域的endpoints依次。endpoints全部健康的情况下,流量只会在同一{region}/{zone}/{sub-zone}转发。当endpoint变得不健康时,会进行相应的降级处理,选择低优先级的endpoints转发。
4.4pilot配置资源发现
Istio1.1将galley作为默认的 配置规则发现中心,pilot通过MCP协议与galley进行配置订阅,取代1.0以前直接从Kubernetes以CR的方式watch配置资源。
5策略和遥测
默认关闭策略检查功能 为了提高多数客户场景下的性能,安装时默认关闭策略检查, 后期可按需开启此功能。
弃用ServiceGraph,推荐使用 Kiali:提供了更丰富的可视化体验。
多方面降低开销 ,提升性能和可扩展性:
o 减少Envoy生成的统计数据的默认收集
o Mixer的工作负载增加load-shedding功能
o 改进Envoy和Mixer的通信协议
控制请求头和路由 增加选项使适配器可以修改请求头和路由
进程外适配器 进程外适配器功能生产可用,下个release弃用进程内适配器。
多方面增强Tracing的能力:
o Trace id支持128bit的范围
o 支持向LightStep发送追踪数据
o 增加选项完全禁用Mixer支持的服务的追踪功能
o 增加策略的decision-aware 追踪
默认的TCP指标 为追踪TCP连接增加默认指标
降低Addon对Load Balancer的依赖 不再通过独立的load balancers对外暴露addons,而是通过Istio gateway来暴露插件服务。
安全的Addon证书 改变插件的证书存储方式。Grafana, Kiali, and Jaeger的用户名和密码存放在kubernetes的secrets中以提高安全性和合规性。
去除内置的statsd collector。Istio目前支持用户自己的statsd,以提高现有Kubernetes部署的灵活性。
另外,Istio运维管理的复杂度也不能被部分用户接受(比如:众多的crd资源),因此社区专门成立了User Experience工作组致力于提高Istio的易用性,进一步降低其使用门槛。
经过大家的共同努力,Istio1.1版本几经推迟终于发布了!我们有理由对其充满期待和信心,共同催熟以Istio为代表的云原生服务网格技术,为我们的用户提供高品质的云服务体验。
欢迎试用华为云应用服务网格Istio。
相关服务请访问: https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019
早上好,我是 Istio 1.1的更多相关文章
- SSH 远程访问及控制 ( 早上好,我是派大星,上帝派来爱你的那颗星)
远程访问及控制 1.SSH远程管理,TCP Wrappers访问控制 2.配置密钥对验证 1.SSH远程管理,TCP访问控制 SSH是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能: ...
- C# 中的委托和事件
觉得这篇文章写的非常好,大神之作,由简入繁,对我这种初学者来说帮忙很大,特此留存下. 摘自:http://tracefact.net/CSharp-Programming/Delegates-and- ...
- 单独编译使用WebRTC的音频处理模块
块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...
- 自写函数VB6 STUFF函数 和 VB.net 2010 STUFF函数 详解
'*************************************************************************'**模 块 名:自写函数VB6 STUFF函数 和 ...
- Javascript模拟继承(赠送.net吐槽一段)
首先吐槽一句,今年的就业形势很不乐观啊,特别是搞.net的(相对java),特特别是还没出校门没有正式工作经验的,找个实习很难,前些天接了个面试电话,上来就质疑我“你一个在校大学生怎么可能做了那么多项 ...
- 微冷的雨Java基础学习手记(一)
使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要 ...
- S1java基础学习笔记
第一章 Java基础 程序目标:减轻现实生活中一类人的工作量,提高工作效率. 学员最终可以书写系统: 超市管理系统,POS机系统等 入库单 销售单 01.课程重点 五大重点: 01.分支(选择)结构 ...
- durex-word
"(半夜没睡着) “你是不是饿了,哎呀我也饿了.”" "(聊到合拍处) “我和你有一万句me too想要说.”" "(异地恋) “我辞职,去你那儿吧! ...
- C# 中的委托和事件(转)
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...
随机推荐
- Docker 容器资源隔离 namespace(十)
目录 一.简介 Linux Namespace的6大类型 二.Mount Namespace 三.IPC Namespace 四.Network Namespace 五.UTS Namespace 六 ...
- 使用layui的form.on绑定select选中事件, form.on()不执行的原因分析
使用layui的form.on绑定select选中事件中, form.on()不执行, 主要原因有 1, select标签中没有写lay_filter属性,用来监听 <select id=&qu ...
- selenium3 web自动化测试框架 三:项目实战中PO模型的设计与封装
po模型设计思想 Page Object 模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面 ...
- 遵循统一的机器学习框架理解高斯混合模型(GMM)
遵循统一的机器学习框架理解高斯混合模型(GMM) 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了网络上诸多资料,特别是B站UPshuhua ...
- 【FFMPEG】I,P,B帧和PTS,DTS时间戳的关系
FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp). 顾名思义,前者是解码的时间,后者是显示的时间.要仔细理解这两个 ...
- 49.Django起步学习
django起步 django安装 pip install django==2.0.4(版本号) pip install django 默认安装最新版本 创建项目 django-admin start ...
- Soda Machine【差分+离散化】
题目链接:https://ac.nowcoder.com/acm/contest/1106/A 题目大意: 1.一条长1e9的线段,每个节点都可以上色.给出n次操作,每次操作将[l, r]区间内的节点 ...
- 滑动窗口协议(Sliding Window Protocol)
滑动窗口协议(Sliding Window Protocol),属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生.该协议允许发送方在停止并等待确认前发送多个数据分组.由于发送方 ...
- 向前引用 ? float VS long ? 这些知识你懂吗?
thinking in java 读书笔记(感悟): 作者:淮左白衣 : 写于 2018年4月2日18:14:15 目录 基本数据类型 float 和 long 谁更大 System.out.prin ...
- day0~day13
day0 day1 day2 day4 day5 day7 day9 day10 day12 day13