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

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

时间:2024-09-27 23:14:50浏览次数:7  
标签:滚动 版本 华为 集群 io Karmada CRD

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

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

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

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

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

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

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

 

新特性概览

联邦应用跨集群滚动升级

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

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

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

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

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

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

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

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

suspension:
dispatchingOnClusters:
clusterNames: 
ClusterA

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

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

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

作为开发者,当 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

 

参考资料

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

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

 

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

 

标签:滚动,版本,华为,集群,io,Karmada,CRD
From: https://www.cnblogs.com/huaweiyun/p/18436762

相关文章

  • 手动搭建高可用的 kubernetes 集群(v1.31)
    手动搭建高可用的kubernetes集群(v1.31)目录1、环境准备1.1集群规划(节约资源,可按需配置)1.2安装依赖包(双节点执行)1.3配置映射(双节点执行)1.4免密登录(master节点执行)1.5环境准备(双节点执行)2、安装containerd(双节点执行)3、安装Kubernetes3.1安装Kubernetes组件(双节点执行)3.2......
  • 反问面试官:如何实现集群内选主
    面试官经常喜欢问什么zookeeper选主原理、什么CAP理论、什么数据一致性。经常都被问烦了,我就想问问面试官,你自己还会实现一个简单的集群内选主呢?估计大部分面试官自己也写不出来。本篇使用Java和Netty实现简单的集群选主过程的示例。这个示例展示了多个节点通过投票选举一......
  • 构建读写分离的数据库集群
    三、构建读写分离的数据库集群1、案例目标(1)了解Mycat提供的读写分离功能。(2)了解MySQL数据库的主从架构。(3)构建以Mycat为中间件的读写分离数据库集群。2、案例分析读写分离的基本原理:让主数据库处理事务性增、改、删除操作,而从库处理查询操作2.1准备三台虚拟机设置如下:......
  • redis集群增加减少节点
    redis集群故障切换方案步骤:1、增加临时节点并加入集群2、将故障节点槽位移动到新节点3、剔除故障节点4、备份故障节点配置下架更换5、更换后按照1-3步骤将临时节点剔除,将原故障节点重新加入集群#测试环境为3主3从,有5个keyredis-cli-c-p8102-h172.17.0.89-a123456d......
  • semi-sync原主库加入集群阻塞问题分析
    问题现象客户在一个一主两从的半同步复制环境下做了手工切换,然后尝试把原主库加入集群中,结果发现新集群中的数据一直无法同步到slave(原主库)中来,查看slave(原主库)同步状态,IO线程和SQL线程都是YES状态,但是Seconds_Behind_Master大于0.查看showprocesslist状态,发现SQL线程一......
  • 【Golang】双节点集群etcd未组成集群vip切换时序
    目录1、背景2、时序图1、背景在vip(虚拟ip)可以从一个节点切换到另一个节点,但etcd未组成集群的环境中,与etcd的连接会断开重连,但同一个key在不同节点的版本可能会不一样导致etcd服务器不向客户端推送数据,也就是客户端watch失效了,具体解决方法参考之前的重连方法。下面......
  • Java单体服务和集群分布式SpringCloud微服务的理解
    单体应用存在的问题1.随着业务的发展开发变得越来越复杂。2.修改或者新增,需要对整个系统进行测试、重新部署。3.一个模块出现问题,很可能导致整个系统崩溃。4.多个开发团队同时对数据进行管理,容易产生安全漏洞。5.各个模块使用同一种技术进行开发,各个模块很难根据实际情况......
  • 南大通用GBase 8s高可用集群架构介绍
    对一些行业关键核心业务应用来说,必须满足7×24小时的不间断服务。这就要求数据库必须具备高可用性以避免数据库节点的单点故障。数据库的高可用架构选择直接影响到业务应用服务可用性的等级。一般行业的关键核心业务要求具备极高可用性,即99.999%的可用性级别。Oracle在高可用架构上......
  • Flink(二)集群安装
    集群安装Standalone模式安装解压缩[user@hadoop102software]$tar-zxvfflink-1.10.1-bin-scala_2.12.tgz-C/opt/module/修改flink/conf/flink-conf.yaml文件jobmanager.rpc.address:hadoop102修改/conf/slaves文件hadoop103hadoop104分发给其他两台虚拟......
  • HDFS数据(跨集群)迁移
    一、数据迁移使用场景1.冷热集群数据同步、分类存储2.整体数据整体搬迁3.数据准实时同步(备份)二、考量因素1.网络传输带宽及时间,是否会影响现有业务2.性能,单机?多线程?分布式?3.是否正常增量同步4.数据迁移的同步性(同步单位时间数据超过单位时间)三、DistCp工具使用3.1简介dis......