首页 > 其他分享 >Karmada新版本发布,支持联邦应用跨集群滚动升级

Karmada新版本发布,支持联邦应用跨集群滚动升级

时间:2024-09-23 17:53:21浏览次数:10  
标签:原生 滚动 版本 华为 集群 io Karmada

摘要:本次升级支持联邦应用跨集群滚动升级,使用户版本发布流程更加灵活可控;透明同事karmadactl 新增了多项运维能力,提供独特的多集群运维体验。

本文分享自华为云社区《Karmada v1.11 版本发布!新增应用跨集群滚动升级能力》,作者: 云容器大未来。


Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。

Karmada新版本发布,支持联邦应用跨集群滚动升级_开源


本版本包含下列新增特性:

支持联邦应用跨集群滚动升级,使用户版本发布流程更加灵活可控

karmadactl 新增了多项运维能力,提供独特的多集群运维体验

为联邦工作负载提供标准化 generation 语义,使 CD 执行一步到位

Karmada Operator 支持自定义 CRD 下载策略,使离线部署更灵活


新特性概览

▍联邦应用跨集群滚动升级

在最新发布的 v1.11 版本[1] 中,Karmada 新增了联邦应用跨集群滚动升级特性。这一特性特别适用于那些部署在多个集群上的应用,使得用户在发布应用新版本时能够采用更加灵活和可控的滚动升级策略。用户可以精细地控制升级流程,确保每个集群在升级过程中都能够平滑过渡,减少对生产环境的影响。这一特性不仅提升了用户体验,也为复杂的多集群管理提供了更多的灵活性和可靠性。

下面通过一个示例来演示如何对联邦应用进行滚动升级:

假定用户已经通过 PropagationPolicy 将 Deployment 应用分发到三个成员集群中:ClusterA、ClusterB、ClusterC:

apiVersion: policy.karmada.io/v1alpha1
kind:
metadata:
name: nginx-propagation
spec:
resourceSelectors:
apiVersion: apps/v1
kind:
name:
placement:
clusterAffinity:
clusterNames:
ClusterA
ClusterB
ClusterC

Karmada新版本发布,支持联邦应用跨集群滚动升级_Karmada_02


此时 Deployment 版本为 v1,为了将 Deployment 资源版本升级至 v2,用户可以依次执行下列步骤。

首先,用户通过配置 PropagationPolicy 策略,暂时停止向 ClusterA 和 ClusterB 分发资源,从而应用的变更将只发生在 ClusterC:

apiVersion: policy.karmada.io/v1alpha1
kind:
metadata:
name: nginx-propagation
spec:
#...
suspension:
dispatchingOnClusters:
clusterNames:
ClusterA
ClusterB

Karmada新版本发布,支持联邦应用跨集群滚动升级_云原生_03


然后更新 PropagationPolicy 资源,允许系统向 ClusterB 集群同步新版本资源:

suspension:
dispatchingOnClusters:
clusterNames:
ClusterA

Karmada新版本发布,支持联邦应用跨集群滚动升级_开源_04


最后删除 PropagationPolicy 资源中的 suspension 字段,允许系统向 ClusterA 集群同步新版本资源:

Karmada新版本发布,支持联邦应用跨集群滚动升级_开源_05


从上述示例中我们可以看到,利用联邦应用跨集群滚动发布能力,新版本应用可以做到按集群粒度滚动升级,并且可以做到精准控制。

此外,该特性还能应用于其他场景:

作为开发者,当 Karmada 控制平面与成员集群争夺资源控制权时,会出现资源被频繁更新的情况。暂停将资源同步到成员集群的过程将有助于快速定位问题。

▍karmadactl 能力增强和运维体验提升

在本版本中,Karmada 社区致力于增强 Karmadactl 的能力,以便提供更好的多集群运维体验,进而摆脱用户对 kubectl 的依赖。

更丰富的命令集

Karmadactl 支持更丰富的命令集,如 create、patch、delete、label、annotate、edit、attach、top node、api-resources 以及 explain,这些命令允许用户对 Karmada 控制面或成员集群上的资源执行更多操作。

更丰富的功能

Karmadactl 引入了 --operation-scope 参数来控制命令的操作范围。有了这个新参数,get、describe、exec 和 explain 等命令可以灵活切换集群视角对 Karmada 控制面或成员集群的资源进行操作。

更详细的命令输出信息

karmadactl get cluster 命令的输出现在增加了 cluster 对象的 Zones、Region、Provider、API-Endpoint 和 Proxy-URL 信息。

通过这些能力增强,karmadactl 的操作和运维体验得到了提升。karmadactl 的新功能和更多详细信息可以通过使用 karmadactl --help 获得。

▍联邦工作负载标准化 generation 语义

在本版本中,Karmada 将联邦层面的工作负载 generation 语义进行了标准化。这一更新为发布系统提供了可靠的参考,增强了跨集群部署的精确度。通过标准化 generation 语义,Karmada 简化了发布流程,并确保一致性地跟踪工作负载状态,使得跨多个集群管理和监控应用程序变得更加容易。

标准化细节为,当且仅当工作负载分发至所有成员集群中的资源状态满足 status.observedGeneration >= metadata.generation 时,联邦层面的工作负载状态中的 observedGeneration 值才会被设置为其本身 .metadata.generation 值,这确保了每个成员集群中相应的控制器均已完成了对该工作负载的处理。此举将联邦层面的 generation 语义同kubernetes 集群的 generation 语义进行了统一,使用户能够更便捷的将单集群业务迁移至多集群业务。

本版本已完成下列资源适配:

GroupVersion: apps/v1 Kind: Deployment, DaemonSet, StatefulSet

GroupVersion: apps.kruise.io/v1alpha1 Kind: CloneSet, DaemonSet

GroupVersion: apps.kruise.io/v1beta1 Kind: StatefulSet

GroupVersion: helm.toolkit.fluxcd.io/v2beta1 Kind: HelmRelease

GroupVersion: kustomize.toolkit.fluxcd.io/v1 Kind: Kustomization

GroupVersion: source.toolkit.fluxcd.io/v1 Kind: GitRepository

GroupVersion: source.toolkit.fluxcd.io/v1beta2 Kind: Bucket, HelmChart, HelmRepository, OCIRepository

如有您有更多资源(包括CRD)需要适配,可以向 Karmada 社区进行反馈,也可以使用 Resource Interpreter进行扩展。


▍Karmada Operator 支持自定义 CRD 下载策略

CRD(Custom Resource Definition,自定义资源定义)资源是 Karmada Operator 用于配置新的 Karmada 实例的关键前提资源。这些 CRD 资源包含了 Karmada 系统的关键 API 定义,例如,PropagationPolicy,ResourceBinding,Work 等。

在 v 1.11 版本中,Karmada Operator 支持用户自定义 CRD 下载策略。利用这个功能,用户可以指定 CRD 资源的下载路径,并定义更多的下载策略,为用户提供了更灵活的离线部署方式。

有关该特性的详细描述,可以参考提案:Custom CRD Download Strategy Support for Karmada Operator[2]


致谢贡献者

Karmada v1.11 版本包含了来自 36 位贡献者的 223 次代码提交,在此对各位贡献者表示由衷的感谢:

贡献者列表:


@08AHAD



@a7i



@aditya7302



@Affan-7



@Akash-Singh04



@anujagrawal699



@B1F030



@chaosi-zju



@dzcvxe



@grosser



@guozheng-shen



@hulizhe



@iawia002



@mohamedawnallah



@mszacillo



@NishantBansal2003



@jabellard



@khanhtc1202



@liangyuanpeng



@qinguoyi



@RainbowMango



@rxy0210



@seanlaii



@spiritNO1



@tiansuo114



@varshith257



@veophi



@wangxf1987



@whitewindmills



@xiaoloongfang



@XiShanYongYe-Chang



@xovoxy



@yash



@yike21



@zhy76



@zhzhuang-zju


Karmada新版本发布,支持联邦应用跨集群滚动升级_云原生_06


参考资料

[1] Karmada v1.11: https://github.com/karmada-io/karmada/releases/tag/v1.11.0

[2] 提案:Custom CRD Download Strategy Support for Karmada Operator: https://github.com/karmada-io/karmada/tree/master/docs/proposals/operator-custom-crd-download-strategy

【更多华为云云原生干货推荐】华为云云原生王者之路集训营


华为云云原生王者之路集训营

为帮助广大技术爱好者快速掌握云原生相关技能,华为云云原生团队与华为云学院联合CNCF开源软件大学启动人才培养计划,推出《华为云云原生王者之路集训营》,从云原生基础知识介绍到最佳实践讲解、底层原理和方案架构深度剖析,层层深入,满足不同云原生技术基础和学习目标人群的需求。本课程还精选数十个企业典型应用场景,作为学员上机实践案例,帮助学员将所学技术快速与企业业务相结合,服务于企业生产。

点击免费参加华为云云原生王者之路集训营,学习后记得小试牛刀,看看测评效果~ 华为云云原生王者之路-黄金课程测评 华为云云原生王者之路-钻石课程测评 华为云云原生王者之路-王者课程测评


点击关注,第一时间了解华为云新鲜技术~

标签:原生,滚动,版本,华为,集群,io,Karmada
From: https://blog.51cto.com/u_15214399/12090673

相关文章

  • es集群配置
    #指定集群名称3个节点必须一致cluster.name:es-cluster#指定节点名称,每个节点名字唯一node.name:node-1#是否有资格为master节点,默认为truenode.master:true#是否为data节点,默认为truenode.data:true#绑定ip,开启远程访问,可以配置0.0.0.0network.host:0.0.0.0#指定web端口......
  • Rabbitmq 集群+镜像队列的搭建
    目录概念普通集群模式镜像列队模式概念任何一个服务,如果仅仅是单机部署,那么性能总是有上限的,RabbitMQ也不例外,当单台RabbitMQ服务处理消息的能力到达瓶颈时,可以通过集群来实现高可用和负载均衡。通常情况下,在集群中我们把每一个服务称之为一个节点,在RabbitMQ集群中......
  • ELK日志收集之ES集群部署 二进制
    一、简介ELK是三个开源软件的缩写:Elasticsearch,Logstash和Kibana,这三个组件常用于日志收集和分析。Logstash是一个日志收集和转发的工具,可以将不同源的日志统一收集、过滤、转发。Elasticsearch是基于Lucene的搜索和分析引擎,可用于存储、搜索和分析大量的日志数据。它的特点是......
  • 全面指南:使用JMeter进行性能压测与性能优化(中间件压测、数据库压测、分布式集群压测、
    目录一、性能测试的指标1、并发量2、响应时间3、错误率4、吞吐量5、资源使用率二、压测全流程三、其他注意点1、并发和吞吐量的关系2、并发和线程的关系四、调优及分布式集群压测(待仔细学习)1.线程数量超过单机承载能力时的解决方案2.如何搭建分布式集群3.实施......
  • kubernetes集群公共服务 DNS
    1.我们先按照之前的方式新增加一个虚拟机。一、软件安装#yum-yinstallbind二、软件配置2.1主配置文件修改#vim/etc/named.conf#cat-n/etc/named.conf1//2//named.conf3//4//ProvidedbyRedHatbindpackagetoconfiguretheISCB......
  • k8s集群,master节点的初始化所用到的,init文件的分析,master节点的核心组件的作用,node节
    标准的k8s集群有三个组成部分管理控制节点、计算节点、私有镜像仓库。管理控制节点的功能:提供集群的控制对集群进行全局决策检测和响应集群事件管理控制节点中有四大核心服务服务端口含义用途APIServer6443api接口负责接收请求,实现功能Scheduler......
  • 学习笔记488—Acrobat设置默认页面显示方式为启用滚动
    Acrobat设置默认页面显示方式为启用滚动使用Acrobat每次打开pdf文件总是单页视图模式,需要手动选择“启用滚动”才能单页连续滚动。但是往往再次打开别的pdf文件时,又恢复到单页视图了,还是需要探索一劳永逸的设置方式解决。经过查找找到了解决方案,具体步骤如下。1、打开Acrobat,选择......
  • GPU与国产芯片异构通信方案,异构万卡集群 初步调研
    视频分享在这:3.1异构万卡集群,GPU与国产计算卡芯片异构通信_哔哩哔哩_bilibili国内已经有三家,实现了异构集群,GPU与国产芯片异构通信方案,初步调用结果如下。异构集群的挑战异构芯片间的混训主要面临两大挑战,一是异构卡通信库差异,导致异构卡之间通信难,二是异构卡之间性能差异......
  • k8s集群更新证书(kubeadm方式部署的集群)
    特别注意:证书到期前替换!!!先查看有哪些证书即将过期点击查看代码foritemin`find/etc/kubernetes/pki-maxdepth2-name"*.crt"`;doopensslx509-initem-text-noout|grepNot;echo======================item===============;doneforfin(ls/etc/kubernetes/......
  • kubeasz 部署k8s1.30.1集群
    实验环境系统:ubuntu24.04cat/etc/hosts192.168.0.71jichao71192.168.0.72jichao72192.168.0.73jichao73192.168.0.74jichao74192.168.0.75jichao75主节点安装ansible#主节点安装apt-get-yinstallansible下载kubeasz最新版本exportrelease=3.6.4wget......