Karmada v1.15 版本发布!多模板工作负载资源感知能力增强
新特性概览
多模板工作负载的资源精确感知
在这个版本中,Karmada 强化了对多模板工作负载的资源感知能力,通过扩展资源解释器,Karmada 现在可以获取同一工作负载不同模板的副本数和资源请求,确保数据的精确性。这一改进也为多模板工作负载的联邦配额管理提供了更加可靠和精细的数据支持。
spec: jobManager: replicas: 1 resource: cpu: 1 memory: 1024m taskManager: replicas: 1 resource: cpu: 2 memory: 2048m
通过 ResourceBinding,你可以查看资源解释器解析出的 FlinkDeployment 各个模板的副本数以及资源请求。
spec: components: - name: jobmanager replicaRequirements: resourceRequest: cpu: "1" memory: "1.024" replicas: 1 - name: taskmanager replicaRequirements: resourceRequest: cpu: "2" memory: "2.048" replicas: 1
此时,FederatedResourceQuota 计算的 FlinkDeployment 占用的资源量为:
status: overallUsed: cpu: "3" memory: 3072m
注意:该特性目前处于 Alpha 阶段,需要启用 MultiplePodTemplatesScheduling 特性开关才能使用。
随着多模板工作负载在云原生环境中的广泛应用,Karmada 致力于对其提供更强有力的支持。在接下来的版本中,我们将基于此功能进一步加强对多模板工作负载的调度支持,提供更加细粒度的资源感知调度——敬请期待更多更新!
集群级故障迁移功能增强
社区在 PropagationPolicy/ClusterPropagationPolicy API 中的 .spec.failover.cluster 下引入了一个新的 StatePreservation 字段, 用于定义有状态应用在故障迁移期间保留和恢复状态数据的策略。结合此策略,当应用从一个故障集群迁移到另一个集群时,能够从原始资源配置中提取关键数据。
以 Flink 应用为例,在 Flink 应用中,jobID 是一个唯一的标识符,用于区分和管理不同的 Flink 作业(jobs)。当集群发生故障时,Flink 应用可以利用 jobID 来恢复故障前作业的状态,从故障点处继续执行。具体的配置和步骤如下:
apiVersion: policy.karmada.io/v1alpha1 kind: PropagationPolicy metadata: name: foo spec: #... failover: cluster: purgeMode: Directly statePreservation: rules: - aliasLabelName: application.karmada.io/cluster-failover-jobid jsonPath: "{ .jobStatus.jobID }"
-
迁移前,Karmada 控制器将按照用户配置的路径提取 job ID。
-
迁移时,Karmada 控制器将提取的 job ID 以 label 的形式注入到 Flink 应用配置中,比如 application.karmada.io/cluster-failover-jobid : <jobID>。
-
运行在成员集群的 Kyverno 拦截 Flink 应用创建请求,并根据 jobID 获取该 job 的 checkpoint 数据存储路径,比如 /<shared-path>/<job-namespace>/<jobId>/checkpoints/xxx,然后配置 initialSavepointPath 指示从save point 启动。
-
Flink 应用根据 initialSavepointPath 下的 checkpoint 数据启动,从而继承迁移前保存的最终状态。
功能约束:
-
应用必须限定在单个集群中运行;
-
迁移清理策略(PurgeMode)限定为 Directly,即需要确保故障应用在旧集群上删除之后再在新集群中恢复应用,确保数据一致性。
结构化日志
Karmada 在 1.15 版本引入了结构化日志支持,可通过 --logging-format=json 启动参数配置 JSON 格式输出。结构化日志示例如下:
{ "ts":“日志时间戳”, "logger":"cluster_status_controller", "level": "info", "msg":"Syncing cluster status", "clusterName":"member1" }
结构化日志的引入显著提升了日志的可用性与可观测性:
● 高效集成:可无缝对接 Elastic、Loki、Splunk 等主流日志系统,无需依赖复杂的正则表达式或日志解析器。
● 高效查询:结构化字段支持快速检索与分析,显著提升故障排查效率。
● 可观察性增强:关键上下文信息(如集群名、日志级别)以结构化字段呈现,便于跨组件、跨时间关联事件,实现精准问题定位。
● 可维护性提升:结构化日志使开发者和运维人员在系统演进过程中更易于维护、解析和调整日志格式,保障日志体系的长期稳定与一致性。
Karmada 控制器和调度器性能显著提升
控制器方面,通过引入优先级队列,控制器能够在重启或切主后优先响应用户触发的资源变更,从而显著缩短服务重启和故障切换过程中的停机时间。
注意:该特性目前处于 Alpha 阶段,需要启用 ControllerPriorityQueue 特性开关才能使用。
测试记录了在开启精确调度组件 karmada-scheduler-estimator 情况下,调度 5,000 个 ResourceBinding 所用的时间,结果如下:
● 调度器吞吐量 QPS 从约 15 提升至约 22,性能提升达 46%;
● gRPC 请求次数从约 10,000 次减少至约 5,000 次,降幅达 50%。
这些测试证明,在 1.15 版本中,Karmada 控制器和调度器的性能得到了极大提升。未来,我们将继续对控制器和调度器进行系统性的性能优化。
致谢贡献者
贡献者列表:
@abhi0324
|
@abhinav-1305
|
@Arhell
|
@Bhaumik10
|
@CaesarTY
|
@cbaenziger
|
@deefreak
|
@dekaihu
|
@devarsh10
|
@greenmoon55
|
@iawia002
|
@jabellard
|
@jennryaz
|
@liaolecheng
|
@linyao22
|
@LivingCcj
|
@liwang0513
|
@mohamedawnallah
|
@mohit-nagaraj
|
@mszacillo
|
@RainbowMango
|
@ritzdevp
|
@ryanwuer
|
@samzong
|
@seanlaii
|
@SunsetB612
|
@tessapham
|
@wangbowen1401
|
@warjiang
|
@wenhuwang
|
@whitewindmills
|
@whosefriendA
|
@XiShanYongYe-Chang
|
@zach593
|
@zclyne
|
@zhangsquared
|
@zhuyulicfc49
|
@zhzhuang-zju
|
@zzklachlan
|
参考资料

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
前端日志回捞系统的性能优化实践|得物技术
一、前言 在现代前端应用中,日志回捞系统是排查线上问题的重要工具。然而,传统的日志系统往往面临着包体积过大、存储无限膨胀、性能影响用户体验等问题。本文将深入分析我们在@dw/log和@dw/log-upload两个库中实施的关键性能优化,以及改造过程中遇到的技术难点和解决方案。 核心优化策略概览: 我们的优化策略主要围绕三个核心问题: 存储膨胀问题 - 通过智能清理策略控制本地存储大小 包体积问题 - 通过异步模块加载实现按需引入 性能影响问题 - 通过队列机制和节流策略提升用户体验 二、核心性能优化 优化一:智能化数据库清理机制 问题背景 传统日志系统的一个重大痛点是本地存储无限膨胀。用户长期使用后,IndexedDB 可能积累数万条日志记录,不仅占用大量存储空间,更拖慢了所有数据库查询和写入操作。 解决方案:双重清理策略 我们实现了一个智能清理机制,它结合了两种策略,并只在浏览器空闲时执行,避免影响正常业务。 双重清理: 按时间清理: 删除N天前的所有日志。 按数量清理: 当日志总数超过阈值时,删除最旧的日志,直到数量达标。 /** * 综合清理日志(同时处理过期和数量限制)...
-
下一篇
LazyLLM教程 | 第8讲:不止是cosine!匹配策略决定你召回的质量
在前面教程中,我们介绍了如何通过查询重写、各种优化检索策略和召回重排策略来提升检索模块的召回率。其中影响检索召回文档质量的一个关键组件为 similarity,它的作用是用来计算检索的文档和查询 query 之间的相似度。 LazyLLM 默认提供的相似度计算函数为 bm25(分为英文和中文) 相似度计算,余弦相似度计算方法。其中 bm25 算法主要针对文本进行计算,而余弦相似度算法主要针对 embedding 进行计算。如果 LazyLLM 提供的默认相似度计算方法不能满足自己的需求,可以自己来设计定义符合自己需求的相似度计算方法。与 Similarity 组件相似,本教程同时介绍 Transform的自定义方法。 本教程主要介绍如何使用自定义 Similarity 组件和 Transform的方法,读完本教程,您将学会 LazyLLM 中自定义 Similarity 和 Transform的方法,并基于 Similarity 和 Transform分别搭建一个简单的RAG应用。 为什么要自定义 Similarity 在 RAG服务中,检索模块的效果直接影响生成结果的相关性与准确性...
相关文章
文章评论
共有0条评论来说两句吧...