Karmada v1.15 版本发布

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

Karmada v1.15 版本现已发布,本版本包含下列新增特性:

  • 多模板工作负载的资源精确感知
  • 集群级故障迁移功能增强
  • 结构化日志
  • Karmada 控制器和调度器性能显著提升

多模板工作负载的资源精确感知

Karmada 利用资源解释器获取工作负载的副本数和资源请求,并据此计算工作负载所需资源总量,从而实现资源感知调度,联邦配额管理等高阶能力。这种机制在传统的单模板工作负载中表现良好。然而,许多AI大数据应用的工作负载  CRD(如 FlinkDeployments,PyTorchJob 和 RayJob 等)包含多个 Pod 模板或组件,每个组件都有独特的资源需求。由于资源解释器仅能处理单个模板的资源请求,无法准确反映不同模板间的差异,导致多模板工作负载的资源计算不够精确。

在这个版本中,Karmada 强化了对多模板工作负载的资源感知能力,通过扩展资源解释器,Karmada 现在可以获取同一工作负载不同模板的副本数和资源请求,确保数据的精确性。这一改进也为多模板工作负载的联邦配额管理提供了更加可靠和精细的数据支持。

假设你部署了一个 FlinkDeployment,其资源相关配置如下:

spec:jobManager:replicas: 1resource:cpu: 1memory: 1024mtaskManager:replicas: 1resource:cpu: 2memory: 2048m

通过 ResourceBinding,你可以查看资源解释器解析出的 FlinkDeployment 各个模板的副本数以及资源请求。

spec:components:- name: jobmanagerreplicaRequirements:resourceRequest:cpu: "1"memory: "1.024"replicas: 1- name: taskmanagerreplicaRequirements:resourceRequest:cpu: "2"memory: "2.048"replicas: 1

此时,FederatedResourceQuota 计算的 FlinkDeployment 占用的资源量为:

 status:overallUsed:cpu: "3"memory: 3072m

注意:该特性目前处于 Alpha 阶段,需要启用 MultiplePodTemplatesScheduling 特性开关才能使用。

随着多模板工作负载在云原生环境中的广泛应用,Karmada 致力于对其提供更强有力的支持。在接下来的版本中,将基于此功能进一步加强对多模板工作负载的调度支持,提供更加细粒度的资源感知调度——敬请期待更多更新!

集群级故障迁移功能增强

在之前的版本中,Karmada 提供了基本的集群级故障迁移能力,能够通过自定义的故障条件触发集群级别的应用迁移。为了满足有状态应用在集群故障迁移过程中保留其运行状态的需求,Karmada 在 v1.15 版本支持了集群故障迁移的应用状态中继机制。对于大数据处理应用(例如 Flink),利用此能力可以从故障前的 checkpoint 重新启动,无缝恢复到重启前的数据处理状态,从而避免数据重复处理。

社区在 PropagationPolicy/ClusterPropagationPolicy API 中的 .spec.failover.cluster 下引入了一个新的 StatePreservation 字段, 用于定义有状态应用在故障迁移期间保留和恢复状态数据的策略。结合此策略,当应用从一个故障集群迁移到另一个集群时,能够从原始资源配置中提取关键数据。

状态保留策略 StatePreservation 包含了一系列 StatePreservationRule 配置,通过 JSONPath 来指定需要保留的状态数据片段,并利用关联的 AliasLabelName 将数据传递到迁移后的集群。

以 Flink 应用为例,在 Flink 应用中,jobID 是一个唯一的标识符,用于区分和管理不同的 Flink 作业(jobs)。当集群发生故障时,Flink 应用可以利用 jobID 来恢复故障前作业的状态,从故障点处继续执行。具体的配置和步骤如下:

apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:name: foo
spec:#...failover:cluster:purgeMode: DirectlystatePreservation:rules:- aliasLabelName: application.karmada.io/cluster-failover-jobidjsonPath: "{ .jobStatus.jobID }"
  1. 迁移前,Karmada 控制器将按照用户配置的路径提取 job ID。

  2. 迁移时,Karmada 控制器将提取的 job ID 以 label 的形式注入到 Flink 应用配置中,比如 application.karmada.io/cluster-failover-jobid : <jobID>

  3. 运行在成员集群的 Kyverno 拦截 Flink 应用创建请求,并根据 jobID  获取该 job 的 checkpoint 数据存储路径,比如  /<shared-path>/<job-namespace>/<jobId>/checkpoints/xxx,然后配置 initialSavepointPath 指示从save point 启动。

  4. Flink 应用根据 initialSavepointPath 下的 checkpoint 数据启动,从而继承迁移前保存的最终状态。

该能力广泛适用于能够基于某个 save point 启动的有状态应用程序,这些应用均可参考上述流程实现集群级故障迁移的状态中继。

注意:该特性目前处于 Alpha 阶段,需要启用 StatefulFailoverInjection 特性开关才能使用。

功能约束:

  1. 应用必须限定在单个集群中运行;

  2. 迁移清理策略(PurgeMode)限定为 Directly,即需要确保故障应用在旧集群上删除之后再在新集群中恢复应用,确保数据一致性。

结构化日志

日志是系统运行过程中记录事件、状态和行为的关键工具,广泛用于故障排查、性能监控和安全审计。Karmada 组件提供丰富的运行日志,帮助用户快速定位问题并回溯执行场景。在先前版本中,Karmada 仅支持非结构化的文本日志,难以被高效解析与查询,限制了其在现代化观测体系中的集成能力。

Karmada 在 1.15 版本引入了结构化日志支持,可通过 --logging-format=json 启动参数配置 JSON 格式输出。结构化日志示例如下:

{"ts":“日志时间戳”,"logger":"cluster_status_controller","level": "info","msg":"Syncing cluster status","clusterName":"member1"
}

结构化日志的引入显著提升了日志的可用性与可观测性:

  • 高效集成:可无缝对接 Elastic、Loki、Splunk 等主流日志系统,无需依赖复杂的正则表达式或日志解析器。

  • 高效查询:结构化字段支持快速检索与分析,显著提升故障排查效率。

  • 可观察性增强:关键上下文信息(如集群名、日志级别)以结构化字段呈现,便于跨组件、跨时间关联事件,实现精准问题定位。

  • 可维护性提升:结构化日志使开发者和运维人员在系统演进过程中更易于维护、解析和调整日志格式,保障日志体系的长期稳定与一致性。

Karmada 控制器和调度器性能显著提升

在本次版本中,Karmada 性能优化团队继续致力于提升 Karmada 关键组件的性能,在控制器和调度器方面取得了显著进展。

控制器方面,通过引入优先级队列,控制器能够在重启或切主后优先响应用户触发的资源变更,从而显著缩短服务重启和故障切换过程中的停机时间。

测试环境包含 5,000 个 Deployment、2,500 个 Policy 以及 5,000 个 ResourceBinding。在控制器重启且工作队列中仍有大量待处理事件的情况下,更新 Deployment 和 Policy。测试结果显示,控制器能够立即响应并优先处理这些更新事件,验证了该优化的有效性

注意:该特性目前处于 Alpha 阶段,需要启用 ControllerPriorityQueue 特性开关才能使用。

调度器方面,通过减少调度过程中的冗余计算,降低远程调用请求次数,Karmada 调度器的调度效率得到了显著提升。

测试记录了在开启精确调度组件 karmada-scheduler-estimator 情况下,调度 5,000 个 ResourceBinding 所用的时间,结果如下:

  • 调度器吞吐量 QPS 从约 15 提升至约 22,性能提升达 46%;

  • gRPC 请求次数从约 10,000 次减少至约 5,000 次,降幅达 50%。

这些测试证明,在 1.15 版本中,Karmada 控制器和调度器的性能得到了极大提升。未来,将继续对控制器和调度器进行系统性的性能优化。

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

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

相关文章

[GYCTF2020]Ezsqli

文章目录测试过滤找注入点布尔盲注无列名盲注总结测试过滤 xor for distinct information handler binary floor having join pg_sleep bp测试出来禁用了这些。 找注入点 查询回显推断1Nu1Labool(false)1’bool(false)1’#bool(false)不是单引号包裹1"#bool(false)没有引…

Agno 多 Agent 协作框架 - 手把手从零开始教程

本教程将带你从零开始&#xff0c;一步步构建一个完整的多 Agent 协作系统。每一步都有详细的代码示例和解释&#xff0c;让你真正理解 Agno 框架的工作原理。第一步&#xff1a;创建你的第一个 Agent 让我们从最简单的开始 - 创建一个能回答问题的 Agent。 1.1 创建基础文件 首…

数据库查询优化

这篇文章适合刚刚入手项目的小伙伴&#xff0c;为大家如何提高数据库查询效率提供一些建议。1.添加索引1.1 索引是什么对于索引基础薄弱的同学&#xff0c;我们可以从 “索引是什么” 简单类比&#xff1a;索引就像书籍的目录&#xff0c;能帮数据库快速定位到需要的数据&#…

安徽大学概率论期末试卷及答案解析

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;安徽大学的概率论课程围绕随机现象的规律性&#xff0c;覆盖了多个核心概念&#xff0c;如随机事件的概率、条件概率、独立事件、概率分布、期望值、方差、大数定律和中心极限定理。本资源包含期末试卷及答案&a…

HarmonyOS应用开发之界面列表不刷新问题Bug排查记:从现象到解决完整记录

Bug排查在软件开发过程中扮演着至关重要的角色&#xff0c;本文采用日记形式记录了Bug排查的全过程&#xff0c;通过这种方式可以更加真实、详细地记录问题&#xff0c;便于后续追溯和经验沉淀。 Bug背景 在使用HarmonyOS的ArkUI框架开发一个卡片管理应用时&#xff0c;遇到了…

FastVLM-0.5B 模型解析

模型介绍 FastVLM&#xff08;Fast Vision-Language Model&#xff09;是苹果团队于2025年在CVPR会议上提出的高效视觉语言模型&#xff0c;专为移动设备&#xff08;如iPhone、iPad、Mac&#xff09;优化&#xff0c;核心创新在于通过全新设计的 FastViTHD混合视觉编码器 解决…

集成学习 | MATLAB基于CNN-LSTM-Adaboost多输入单输出回归预测

集成学习 | MATLAB基于CNN-LSTM-Adaboost多输入单输出回归预测 一、主要功能 该代码使用 CNN 提取特征,LSTM 捕捉时序依赖,并通过 AdaBoost 集成多个弱学习器(每个弱学习器是一个 CNN-LSTM 网络),最终组合成一个强预测器,用于回归预测任务。代码完成了从数据预处理、模型…

关于Homebrew:Mac快速安装Homebrew

关于macOS 安装HomebrewHomebrewHomebrew介绍Homebrew 官网地址Homebrew 能安装什么&#xff1f;Mac上安装Homebrew主要步骤&#xff1a;打开终端&#xff0c;执行官网安装脚本注意遇到问题①&#xff1a;脚本在克隆 Homebrew 核心仓库时&#xff0c;​​无法连接 GitHub​​&a…

【前端】使用Vercel部署前端项目,api转发到后端服务器

文章目录Vercel是什么概要Vercel部署分为两种方案&#xff1a;一、使用GitHub构建部署二、通过 Vercel CLI 上传本地构建资源注意事项转发API到后端小结Vercel是什么 Vercel是一款专为前端开发者打造的云部署平台&#xff0c;它支持一键部署静态网站、AI工具和现代Web应用。Ve…

滚珠导轨在工业制造领域如何实现高效运行?

在工业制造领域中滚珠导轨凭借其高精度、低摩擦、高刚性等特点&#xff0c;被广泛应用于多种设备和场景&#xff0c;并在设备性能中起着关键作用&#xff0c;以下是具体应用&#xff1a;加工中心&#xff1a;滚珠导轨用于加工中心的工作台和主轴箱等部件的移动&#xff0c;能保…

大基座模型与 Scaling Law:AI 时代的逻辑与困境

一、背景&#xff1a;为什么大模型一定要“做大”&#xff1f; 在人工智能的发展历程中&#xff0c;有一个不容忽视的“铁律”&#xff1a;更大的模型往往意味着更强的性能。从 GPT-2 到 GPT-4&#xff0c;从 BERT 到 PaLM&#xff0c;从 LLaMA 到 Claude&#xff0c;每一代的…

内网的应用系统间通信需要HTTPS吗

内网是否需要 HTTPS&#xff1f; 虽然内网通常被视为“相对安全”的环境&#xff0c;但仍需根据具体情况决定是否使用 HTTPS&#xff0c;原因如下&#xff1a; 内部威胁风险 ● 内网可能面临内部人员攻击、横向渗透&#xff08;如黑客突破边界后在内网扫描&#xff09;、设备…

6.ImGui-颜色(色板)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;5.ImGui-按钮 IMGui中表示颜色的的结构体 ImVec4和ImU32&#xff0c;如下图红框…

【C++】Vector完全指南:动态数组高效使用

0. 官方文档 vector 1. vector介绍 Vector 简单来说就是顺序表&#xff0c;是一个可以动态增长的数组。 vector是表示可变大小数组的序列容器。 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c…

关于无法导入父路径的问题

问题重现 有下面的代码&#xff1a; from ..utils import Config,set_DATA_PATH DATA_PATH set_DATA_PATH()报错如下&#xff1a;from ..utils import Config,set_DATA_PATH ImportError: attempted relative import beyond top-level package解决方案 #获取当前脚本所在目录的…

C/C++包管理工具:Conan

Conan是一个专为C/C设计的开源、去中心化、跨平台的包管理器&#xff0c;致力于简化依赖管理和二进制分发流程。Conan基于Python进行开发&#xff0c;支持与主流的构建系统集成&#xff0c;提供了强大的跨平台和交叉编译能力。通过Conan&#xff0c;开发者可以高效的创建、共享…

核心高并发复杂接口重构方案

核心高并发复杂接口重构方案 一、重构目标与原则 核心目标 提升接口性能:降低响应时间,提高吞吐量,降低资源使用 增强可维护性:拆解复杂逻辑,模块化设计,降低后续迭代成本 保障稳定性:通过架构优化和灰度策略,确保重构过程无服务中断 提升扩展性:设计灵活的扩展点,…

C++容器内存布局与性能优化指南

C容器的内存布局和缓存友好性对程序性能有决定性影响。理解这些底层机制&#xff0c;能帮你写出更高效的代码。 一、容器内存布局概述 不同容器在内存中的组织方式差异显著&#xff0c;这直接影响了它们的访问效率和适用场景。容器类型内存布局特点元数据位置元素存储位置std::…

Beautiful.ai:AI辅助PPT工具高效搞定排版,告别熬夜做汇报烦恼

你是不是每次做 PPT 都头大&#xff1f;找模板、调排版、凑内容&#xff0c;熬大半夜出来的东西还没眼看&#xff1f;尤其是遇到 “明天就要交汇报” 的紧急情况&#xff0c;打开 PPT 软件半天&#xff0c;光标在空白页上晃来晃去&#xff0c;连标题都想不出来 —— 这种抓瞎的…

阿里云携手MiniMax构建云原生数仓最佳实践:大模型时代的 Data + AI 数据处理平台

MiniMax简介MiniMax是全球领先的通用人工智能科技公司。自2022年初成立以来&#xff0c;MiniMax以“与所有人共创智能”为使命&#xff0c;致力于推动人工智能科技前沿发展&#xff0c;实现通用人工智能(AGI&#xff09;。MiniMax自主研发了一系列多模态通用大模型&#xff0c;…