OpenKruise v0.10.0 版本发布:新增应用弹性拓扑管理、应用防护等能力

简介: 阿里云开源的云原生应用自动化管理套件、CNCF Sandbox 项目 -- OpenKruise,今天发布 v0.10.0 新版本,这也会是 OpenKruise v1.0 之前的最后一个 minor 版本。 本文将带你一览 v0.10.0 的新变化,其中新增的 WorkloadSpread、PodUnavailableBudget 等大颗粒特性后续还将有转文详细介绍其设计实现原理。

作者 | 酒祝

背景

阿里云开源的云原生应用自动化管理套件、CNCF Sandbox 项目 -- OpenKruise,今天发布 v0.10.0 新版本,这也会是 OpenKruise v1.0 之前的最后一个 minor 版本。

本文将带你一览 v0.10.0 的新变化,其中新增的 WorkloadSpread、PodUnavailableBudget 等大颗粒特性后续还将有转文详细介绍其设计实现原理。

新功能概览

1.  WorkloadSpread:旁路的应用弹性拓扑管理能力

在应用部署运维的场景下,有着多种多样的拓扑打散以及弹性的诉求。其中最常见、最基本的,就是按某种或几种拓扑水平打散,比如:

  • 应用部署需要按 node 维度打散,避免堆叠(提高容灾能力)
  • 应用部署需要按 AZ(available zone)维度打散(提高容灾能力)

这些基本的诉求,通过 Kubernetes 原生提供的 pod affinity、topology spread constraints 等能力目前都能够满足了。但在实际的生产场景下,还有着太多更加复杂的分区与弹性需求,以下举一些实际的例子:

  • 按 zone 打散时,需要指定在不同 zone 中部署的比例数,比如某个应用在 zone a、b、c 中部署的 Pod 数量比例为 1 : 1 : 2 等(由于一些现实的原因比如该应用在多个 zone 中的流量不均衡等)
  • 存在多个 zone 或不同机型的拓扑,应用扩容时,优先部署到某个 zone 或机型上,当资源不足时再部署到另一个 zone 或机型上(往后以此类推);应用缩容时,要按反向顺序,优先缩容后面 zone 或机型上的 Pod(往前以此类推)
  • 存在多个基础的节点池和弹性的节点池,应用部署时需要固定数量或比例的 Pod 部署在基础节点池,其余的都扩到弹性节点池

对于这些例子,过去一般只能将一个应用拆分为多个 Workload(比如 Deployment)来部署,才能解决应用在不同拓扑下采用不同比例数量、扩缩容优先级、资源感知、弹性选择等场景的基本问题,但还是需要 PaaS 层深度定制化,来支持对一个应用多个 Workload 的精细化管理。

针对这些问题,在 Kruise v0.10.0 版本中新增了 WorkloadSpread 资源,目前它支持配合 Deployment、ReplicaSet、CloneSet 这些 Workload 类型,来管理它们下属 Pod 的分区与弹性拓扑。

以下是一个简化的例子:

apiVersion: apps.kruise.io/v1alpha1
kind: WorkloadSpread
metadata:name: workloadspread-demo
spec:targetRef:apiVersion: apps/v1 | apps.kruise.io/v1alpha1kind: Deployment | CloneSetname: workload-xxxsubsets:- name: subset-arequiredNodeSelectorTerm:matchExpressions:- key: topology.kubernetes.io/zoneoperator: Invalues:- zone-amaxReplicas: 10 | 30%- name: subset-brequiredNodeSelectorTerm:matchExpressions:- key: topology.kubernetes.io/zoneoperator: Invalues:- zone-b

创建这个 WorkloadSpread 可以通过 targetRef 关联到一个 Workload 对象上,然后这个 Workload 在扩容 pod 的过程中,Pod 会被 Kruise 按上述策略注入对应的拓扑规则。这是一种旁路的注入和管理方式,本身不会干涉 Workload 对 Pod 的扩缩容、发布管理。

注意:WorkloadSpread 对 Pod 缩容的优先级控制是通过 Pod Deletion Cost 来实现的:

  • 如果 Workload 类型是 CloneSet,则已经支持了这个 feature,可以实现缩容优先级
  • 如果 Workload 类型是 Deployment/ReplicaSet,则要求 Kubernetes version >= 1.21,且在 1.21 中要在 kube-controller-manager 上开启 PodDeletionCost 这个 feature-gate

使用 WorkloadSpread 功能,需要在 安装/升级 Kruise v0.10.0 的时候打开 WorkloadSpread 这个 feature-gate。

上述例子仅为最简化配置,更多使用说明请参考 官网文档,具体的实现原理我们将会在后续的文章中与大家分享。

2.  PodUnavailableBudget:应用可用性防护

在诸多 Voluntary Disruption 场景中 Kubernetes 原生提供的 Pod Disruption Budget(PDB) 通过限制同时中断的 Pod 数量,来保证应用的高可用性。

但还有很多场景中,即便有 PDB 防护依然将会导致业务中断、服务降级,比如:

  • 应用 owner 通过 Deployment 正在进行版本升级,与此同时集群管理员由于机器资源利用率过低正在进行 node 缩容
  • 中间件团队利用 SidecarSet 正在原地升级集群中的sidecar版本(例如:ServiceMesh envoy),同时HPA正在对同一批应用进行缩容
  • 应用 owner 和中间件团队利用 CloneSet、SidecarSet 原地升级的能力,正在对同一批 Pod 进行升级

这其实很好理解 -- PDB 只能防控通过 Eviction API 来触发的 Pod 驱逐(例如 kubectl drain驱逐node上面的所有Pod),但是对于 Pod 删除、原地升级 等很多操作是无法防护的。

在 Kruise v0.10.0 版本中新增的 PodUnavailableBudget(PUB)功能,则是对原生 PDB 的强化扩展。它包含了 PDB 自身的能力,并在此基础上增加了对更多 Voluntary Disruption 操作的防护,包括但不限于 Pod 删除、原地升级等。

apiVersion: apps.kruise.io/v1alpha1
kind: PodUnavailableBudget
metadata:name: web-server-pubnamespace: web
spec:targetRef:apiVersion: apps/v1 | apps.kruise.io/v1alpha1kind: Deployment | CloneSet | StatefulSet | ...name: web-server# selector 与 targetRef 二选一配置
# selector:
#   matchLabels:
#     app: web-server# 保证的最大不可用数量maxUnavailable: 60%# 保证的最小可用数量
# minAvailable: 40%

使用 PodUnavailableBudget 功能,需要在 安装/升级 Kruise v0.10.0 的时候打开feature-gate(两个可以选择打开一个,也可以都打开):

  • PodUnavailableBudgetDeleteGate:拦截防护 Pod 删除、驱逐等操作
  • PodUnavailableBudgetUpdateGate:拦截防护 Pod 原地升级等更新操作

更多使用说明请参考 官网文档,具体的实现原理我们将会在后续的文章中与大家分享。

3.  CloneSet 支持按拓扑规则缩容

在 CloneSet 缩容(调小 replicas 数量)的时候,选择哪些 Pod 删除是有一套固定算法排序的:

  1. 未调度 < 已调度
  2. PodPending < PodUnknown < PodRunning
  3. Not ready < ready
  4. 较小 pod-deletion cost < 较大 pod-deletion cost
  5. 较大打散权重 < 较小
  6. 处于 Ready 时间较短 < 较长
  7. 容器重启次数较多 < 较少
  8. 创建时间较短 < 较长

其中,“4” 是在 Kruise v0.9.0 中开始提供的特性,用于支持用户指定删除顺序(WorkloadSpread 就是利用这个功能实现缩容优先级);而 “5” 则是当前 v0.10.0 提供的特性,即在缩容的时候会参考应用的拓扑打散来排序。

  • 如果应用配置了 topology spread constraints ,则 CloneSet 缩容时会按照其中的 topology 维度打散来选择 Pod 删除(比如尽量打平多个 zone 上部署 Pod 的数量)
  • 如果应用没有配置 topology spread constraints ,则默认情况下 CloneSet 缩容时会按照 node 节点维度打散来选择 Pod 删除(尽量减少同 node 上的堆叠数量)

4.  Advanced StatefulSet 支持流式扩容

为了避免在一个新 Advanced StatefulSet 创建后有大量失败的 pod 被创建出来,从 Kruise v0.10.0 版本开始引入了在 scale strategy 中的 maxUnavailable 策略:

apiVersion: apps.kruise.io/v1beta1
kind: StatefulSet
spec:# ...replicas: 100scaleStrategy:maxUnavailable: 10% # percentage or absolute number

当这个字段被设置之后,Advanced StatefulSet 会保证创建 pod 之后不可用 pod 数量不超过这个限制值。

比如说,上面这个 StatefulSet 一开始只会一次性创建 10 个 pod。在此之后,每当一个 pod 变为 running、ready 状态后,才会再创建一个新 pod 出来。

注意:这个功能只允许在 podManagementPolicy 是 `Parallel` 的 StatefulSet 中使用。

5.  其他

除了上述内容外,还有一些变动如:

  • SidecarSet 新增 imagePullSecrets、injectionStrategy.paused 等字段支持配置 sidecar 镜像拉取 secret 以及暂停注入
  • Advanced StatefulSet 支持配合原地升级的镜像提前预热

详见 ChangeLog 文档。

最后

本次的 v0.10.0 会是 OpenKruise v1.0 之前的最后一个 minor 版本,在年底之前 Kruise 将会发布首个 v1.0 大版本,敬请期待!

原文链接
本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

极验创始人吴渊:恶意流量威胁新趋势,洞察网络黑产3大核心本质

天下没有免费的午餐&#xff0c;更没有免费的流量。以电商为例&#xff0c;最疯狂的时候&#xff0c;某电商平台单个获客成本接近400元。作为互联网的稀缺资源&#xff0c;流量的成本不断冲击着企业运营红线。 而就当企业盯着成本、守着转化时&#xff0c;网络黑产已完成对平台…

来啊,来魔改啊,人生重开模拟器一键托管上线

简介&#xff1a; 云开发平台将“人生重开模拟器”fork到了云开发的仓库了&#xff0c;用户只需要直接fork到自己的仓库以后就可以在云开发平台上进行快速魔改和一键部署&#xff0c;绑定自己的域名就能够让小伙伴们一起来感受你的魔改创意哦。 人生无法重来&#xff0c;游戏可…

内大计算机学院,内蒙古大学:计算机学院

计算机学院是全区高等学校中最早建立的专门培养计算机专业技术中高级人才的教学与科研单位。学院由计算机科学系、软件工程系、信息工程管理系、计算(实验)中心等教学单位组成&#xff0c;设有计算机网络与信息安全、人工智能与蒙古文信息处理、计算机软件与理论和管理科学与工…

python动态类型的坑_python进阶教程之动态类型详解

动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过&#xff0c;Python的变量(variable)不需要声明&#xff0c;而在赋值时&#xff0c;变量可以重新赋值为任意值。这些都与动态类型的概念相关。动态类型在我们接触的对象中&#xff0c;有一类特殊的对象&…

从边缘到云,万物互联时代Aruba的技术经

作者 | 宋慧 出品 | CSDN 云计算 网络&#xff0c;是重要的 IT 基础设施之一。在 2021 年底&#xff0c;国际分析机构 Gartner 发布了本年度企业有线和无线局域网基础设施魔力象限&#xff0c;HPE 旗下公司 Aruba 连续第十六年被列入领导者象限。更早一些的 2021 年 Gartner 广…

Apache Hudi 在 B 站构建实时数据湖的实践

简介&#xff1a; B 站选择 Flink Hudi 的数据湖技术方案&#xff0c;以及针对其做出的优化。 本文作者喻兆靖&#xff0c;介绍了为什么 B 站选择 Flink Hudi 的数据湖技术方案&#xff0c;以及针对其做出的优化。主要内容为&#xff1a; 传统离线数仓痛点数据湖技术方案Hudi…

计算机谭音乐同桌的你,同桌的你_Ava_clover_新浪博客

写这个是因为杨傻傻同学那天让我看他听得那首歌《同桌的你》让本人感受颇多虽然开玩笑的问他“我是你的同桌吗&#xff1f;”但是&#xff0c;我还是很感谢杨傻傻(虽然他非要喊我喊他杨哥&#xff0c;但是我还是喜欢这个名字)回想自己所有的同桌但是真正能够记住的其实也就只有…

表格存储 SQL 查询多元索引

简介&#xff1a; 多元索引是表格存储产品中一个重要的功能&#xff0c;多元索引使用倒排索引技术为表格存储提供了非主键列上的快速检索功能&#xff0c;另外也提供了统计聚合功能。表格存储近期开放了SQL查询功能&#xff0c;SQL引擎默认从原始表格中读取数据&#xff0c;非主…

oom 如何避免 高并发_【面试】如何避免OOM的发生

小编基础薄弱&#xff0c;发的内容不算是抄袭&#xff0c;但也基本都是借鉴&#xff0c;若有不足的地方还望点评。内存泄漏(Out Of Memory)俗称OOM&#xff0c;翻了网上一些资料&#xff0c;发生OOM的情况大致有两种&#xff0c;一种是Activity当中对象的引用故障&#xff0c;另…

好难啊……一个 try-catch 问出这么多花样

作者 | 阿Q来源 | 阿Q说代码刚刚面试回来的B哥又在吐槽了&#xff1a;现在的面试官太难伺候了&#xff0c;放着好好的堆、栈、方法区不问&#xff0c;上来就让我从字节码角度给他分析一下try-catch-finally&#xff08;以下简称TCF&#xff09;的执行效率.....今天我们就来好好…

数据是如何被保护的?高质量存储告诉你

简介&#xff1a; 作为关键信息基础设施运营者&#xff0c;阿里云提供了全方位的数据安全保护方案。今天&#xff0c;我们就从数据存储的角度来聊一聊数据是如何被保护的。 原文链接 本文为阿里云原创内容&#xff0c;未经允许不得转载。

无法启动此程序因为计算机丢失dtlui,电脑缺少dll文件_电脑开机总是出来DLL文件丢失,...

最佳答案如果您的电脑开机出现“加载C&#xff1a;/WIND/SYSTEM32.UKWIEG96.DLL时出错”之类的加载dll文件出错或提示dll文件丢失&#xff0c;但又可以正常进入系统&#xff0c;那么这篇文章或许可以给您带来解决办法。碰到这种情况我们可以肯定是dll因为某些原因出错或丢失了&…

findler mac 隐藏文件_fiddler使用实例之----------查找隐藏的真实地址!!!!

这个教程讲解下如何用fddler &#xff0c;找到页面的真是地址同样也是可以找到页面隐藏的内容&#xff0c;两者原理是一样的&#xff0c;在页面能看到的信息&#xff0c;页面源代码却看不到&#xff0c;也就是这样的信息其实并不在这个页面上&#xff0c;而是通过一些方法调用来…

Nacos 开源、自研、商业化三位一体战略解读

简介&#xff1a; Nacos作为整个阿里云原生三位战略中的核心组成部分&#xff0c;我们在2018年以Configserver/VIPServer/Diamond为基础通过Nacos开源输出阿里十年沉淀的注册中心和配置中心能力&#xff0c;并且快速成为国内首选。并且通过云产品MSE以BaaS模式输出解决方案能力…

Haystack 太强了!存 2600 亿图片

作者 | 奇伢来源 | 奇伢云存储小文件存储小文件存储&#xff0c;老生常谈的问题。先聊聊小文件存储重点关注的是什么&#xff1f;以前我们提过&#xff0c;对于磁盘来说&#xff0c;小 io 吃 iops&#xff0c;大块 io 吃吞吐。划重点&#xff1a;小文件的重点是 io 次数。为什么…

全国计算机网络教学研讨会,历届全国高校计算机网络教学研讨会

1. 第六届全国高校计算机网络教学研讨会在内蒙古大学成功召开2. 第五届全国高校计算机网络教学研讨会在温州大学成功召开 2012年10月26日&#xff0d;27日&#xff0c;第五届全国高校计算机网络教学研讨会在温州大学召开。会议由中国计算机学会互联网专业委员会和中国计算机学会…

Dubbo 和 HSF 在阿里巴巴的实践:携手走向下一代云原生微服务

简介&#xff1a; HSF 和 Dubbo 的融合是大势所趋。为了能更好的服务内外用户&#xff0c;也为了两个框架更好发展&#xff0c;Dubbo 3.0 和以 Dubbo 3.0 为内核适配集团内基础架构生态的 HSF 3 应运而生。 作者 | 郭浩 Dubbo 和 HSF 都是阿里巴巴目前在使用的微服务 RPC 框架…

apache过滤恶意频繁访问_采用网关过滤器实现权限验证及对异常统一处理

采用网关过滤器实现权限验证1、创建 zuul 项目2、修改 pom.xml 文件<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://mav…

如何攻破容器持久化存储挑战?

背景 云原生趋势下&#xff0c;应用容器化比例正在快速增长&#xff0c;Kubernetes 也已成为云原生时代新的基础设施。 观察今天的容器和 Kubernetes 的应用现状&#xff0c;可以看到两个普遍的现象&#xff1a; 首先&#xff0c;在云上托管 Kubernetes 已经成为企业上云及运…

用科技共创美好:英特尔助力北京冬奥会新体验

2022年1月24日&#xff0c;北京2022年冬奥会在即&#xff0c;北京冬奥会的气氛愈发浓烈。作为奥运会全球TOP合作伙伴&#xff0c;英特尔以基于英特尔处理器的创新技术支持奥运会&#xff0c;释放科技冬奥的魅力。今天&#xff0c;英特尔在位于前门建成的全新升级的“英特尔北京…