• [技术干货] 华为云云容器引擎CCE调度篇——使用Volcano调度工作负载
    华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率,CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。本系列文章将介绍Volcano调度在华为云云容器引擎CCE中的运用。Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。一般情况下,Kubernetes在调度工作负载时会使用自带的默认调度器,若需要使用Volcano调度器的能力,您可以为工作负载指定调度器。关于Kubernetes调度器的详情请参见为Pod指定调度器。  约束与限制  调度大量工作负载的场景下,Volcano会打印较多的日志,建议搭配日志服务使用,否则可能导致日志过多占满所在节点磁盘。  使用Volcano调度工作负载  使用Volcano调度工作负载时,只需要在Pod的spec字段中设置schedulerName参数并指定参数值为volcano,示例如下:1、使用yaml创建queue:apiVersion: scheduling.volcano.sh/v1beta1kind: Queuemetadata:  name: q1spec:  reclaimable: true  weight: 12、在Pod的spec字段中设置schedulerName参数并指定参数值为volcano:apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx  labels:    app: nginxspec:  replicas: 4  selector:    matchLabels:      app: nginx  template:    metadata:      annotations:        # 指定作业到q1队列        scheduling.volcano.sh/queue-name: "q1"        volcano.sh/preemptable: "true"      labels:        app: nginx    spec:      # 指定调度器为Volcano      schedulerName: volcano      containers:      - name: nginx        image: nginx        imagePullPolicy: IfNotPresent        resources:          limits:            cpu: 1            memory: 100Mi          requests:            cpu: 1            memory: 100Mi        ports:        - containerPort: 80 同时,Volcano还支持设置负载所属队列和抢占属性等,可通过Pod的注解实现。目前Volcano支持的Pod注解配置如下:Pod注解说明scheduling.volcano.sh/queue-name: "<queue-name>"指定负载所在队列,其中<queue-name>为队列名称。volcano.sh/preemptable: "true"表示作业是否可抢占。开启后,认为该作业可以被抢占。取值范围:true:开启抢占。(默认为开启状态)false:关闭抢占。 可通过查询Pod详情查看Pod是否由Volcano调度,以及被分配的队列:1、使用以下命令查询Pod详情并获取scheduling.k8s.io/group-name的值:kubectl describe pod <pod_name>Pod的scheduling.k8s.io/group-name值回显如下:2、查看Pod是否由Volcano调度,以及被分配的队列:kubectl describe pg <group_name>回显如下:Spec:  Min Member:  1  Min Resources:    Cpu:     100m    Memory:  100Mi  Queue:     q1Status:  Conditions:    Last Transition Time:  2023-05-30T01:54:43Z    Reason:                tasks in gang are ready to be scheduled    Status:                True    Transition ID:         70be1d7d-3532-41e0-8324-c7644026b38f    Type:                  Scheduled  Phase:                   RunningEvents:  Type    Reason     Age              From     Message  ----    ------     ----             ----     -------  Normal  Scheduled  0s (x3 over 2s)  volcano  pod group is ready 📌 更多Volcano云原生批量计算社区运用,请访问社区仓库或官网:Volcano云原生批量计算社区:https://volcano.shVolcano GitHub: cid:link_2Volcano云原生批量计算公开课:cid:link_0华为云云容器引擎CCE:cid:link_1 Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Ray、 Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene 等众多主流计算框架的支持,并构建起完善的上下游生态。 更多云原生技术动向关注容器魔方 
  • [技术干货] 华为云云容器引擎CCE调度篇——Volcano调度概述
     Volcano 是一个基于Kubernetes的云原生批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。  Volcano Scheduler  Volcano Scheduler是负责Pod调度的组件,它由一系列action和plugin组成。action定义了调度各环节中需要执行的动作;plugin根据不同场景提供了action 中算法的具体实现细节。Volcano Scheduler具有高度的可扩展性,您可以根据需要实现自己的action和plugin。图1 Volcano Scheduler工作流 Volcano Scheduler的工作流程如下:客户端提交的Job被调度器识别到并缓存起来。周期性开启会话,一个调度周期开始。将没有被调度的Job发送到会话的待调度队列中。遍历所有的待调度Job,按照定义的次序依次执行enqueue、allocate、preempt、reclaim、backfill等动作,为每个Job找到一个最合适的节点。将该Job 绑定到这个节点。action中执行的具体算法逻辑取决于注册的plugin中各函数的实现。关闭本次会话。  Volcano自定义资源  Pod组(PodGroup):Pod组是Volcano自定义资源类型,代表一组强关联Pod的集合,主要用于批处理工作负载场景,比如Tensorflow中的一组ps和worker。队列(Queue):容纳一组PodGroup的队列,也是该组PodGroup获取集群资源的划分依据。作业(Volcano Job,简称vcjob):Volcano自定义的Job资源类型。区别于Kubernetes Job,vcjob提供了更多高级功能,如可指定调度器、支持最小运行Pod数、 支持task、支持生命周期管理、支持指定队列、支持优先级调度等。Volcano Job更加适用于机器学习、大数据、科学计算等高性能计算场景。应用扩缩容优先级策略(Balancer与BalancerPolicyTemplate):开启Volcano应用扩缩容优先级策略后,将会在集群中新增两类CRD资源,其中BalancerPolicyTemplate用来进行优先级策略定义,Balancer用来申明扩缩容优先级的作用范围。一个Balancer CR资源对应一个BalancerPolicyTemplate CR资源,两者结合共同申明哪些工作负载使用了哪些优先级策略。详情请参见应用扩缩容优先级策略。 Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Ray、 Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene 等众多主流计算框架的支持,并构建起完善的上下游生态。更多信息,请访问:Volcano云原生批量计算社区:https://volcano.shVolcano GitHub: cid:link_2Volcano云原生批量计算公开课:cid:link_0华为云云容器引擎CCE:cid:link_1 添加云原生小助手k8s2222进入技术交流群
  • [技术干货] 华为云云容器引擎CCE调度概述:CPU资源调度、GPU/NPU异构资源调度及Volcano调度
    华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率。本文将重点介绍CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。  CPU调度  CCE提供CPU管理策略,可为应用分配完整的物理CPU核,从而提升性能并降低调度延迟。功能描述参考文档CPU管理策略当节点上运行大量CPU密集型Pod时,工作负载可能会在不同的CPU核之间迁移。对于CPU敏感型应用,可通过Kubernetes提供的CPU管理策略为其分配独占物理核,从而提升性能并降低调度延迟。CPU管理策略增强型CPU管理策略在传统的CPU管理策略基础上,该策略新增Burstable Pod(要求CPU的Request和Limit值都是正整数)的智能调度能力,允许这类Pod优先使用特定CPU,而非完全独占。增强型CPU管理策略  GPU调度  CCE为集群中的GPU异构资源提供调度能力,从而实现资源的精细化分配与高效利用,满足不同类型工作负载对GPU算力的差异化需求,提升整体集群的调度效率与业务运行性能。功能描述参考文档Kubernetes默认GPU调度该调度模式可以指定Pod申请的GPU显卡数量,支持申请设置为小于1的数量,实现多个Pod共享使用GPU。使用Kubernetes默认GPU调度GPU虚拟化GPU虚拟化能够动态对GPU设备显存与算力进行划分,单个GPU卡最多虚拟化成20个GPU虚拟设备。相对于静态分配来说,虚拟化的方案更加灵活,最大程度保证业务稳定的前提下,可以完全由用户自己定义使用的GPU量,提高GPU利用率。GPU虚拟化GPU监控GPU指标可分为CCE提供的GPU监控指标和DCGM提供的GPU监控指标。通过Prometheus和Grafana,可以实现这些GPU指标的全面监测,从而优化计算性能,快速定位故障,合理调度资源,进而提升GPU利用率并降低运维成本。GPU监控GPU弹性伸缩CCE支持通过GPU指标配置工作负载和节点弹性伸缩策略,从而实现资源的动态调度与优化,提高计算效率,保障业务稳定运行,并有效降低运维成本。GPU弹性伸缩GPU故障处理当GPU资源出现故障时,CCE集群会及时上报事件,并根据事件信息提供单GPU故障隔离功能,确保其他正常GPU继续提供服务,最大限度降低业务影响。GPU故障处理  NPU调度  CCE为集群中的NPU异构资源提供调度能力,从而实现对推理和图像识别等工作的高效处理。功能描述参考文档NPU芯级独占调度该调度模式可以根据Pod申请的NPU数量,为工作负载提供NPU资源。NPU芯级独占调度NPU拓扑感知调度该调度模式指结合昇腾AI处理器和节点间的拓扑结构灵活匹配调度策略,其能够有效减少计算资源碎片和网络拥塞,最大化提升NPU算力利用率。NPU拓扑感知调度NPU虚拟化NPU虚拟化指将通过资源虚拟化的方式将物理机中配置的NPU(昇腾AI产品)切分为多个虚拟NPU(vNPU),并挂载至容器中使用,以实现对硬件资源的灵活切分与动态管理。NPU虚拟化NPU监控当集群中包含NPU节点时,监控NPU指标可以帮助用户识别性能瓶颈、优化资源利用率、快速定位异常,从而提升系统的整体稳定性和效率。在CCE Standard和Turbo集群中,您可以使用npu-exporter组件将dcmi/hccn tool采集的NPU指标数据上传至云原生监控系统,实现NPU资源的实时监控与告警,从而提升系统的可靠性和性能。NPU监控  Volcano调度  Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。功能描述参考文档使用Volcano调度工作负载一般情况下,Kubernetes在调度工作负载时会使用自带的默认调度器,若需要使用Volcano调度器的能力,您可以为工作负载指定调度器。使用Volcano调度工作负载资源利用率优化调度针对计算资源进行优化的调度策略,可以有效减少各节点资源碎片,最大化地提高计算资源的利用率。资源利用率优化调度业务优先级保障调度根据业务的重要性和优先级,设置自定义的策略对业务占用的资源进行调度,确保关键业务的资源优先级得到保障。业务优先级保障调度AI任务性能增强调度根据AI任务的工作性质、资源的使用情况,设置对应的调度策略,可以增强集群业务的吞吐量,提高业务运行性能。AI任务性能增强调度任务队列调度通过队列资源管理机制,动态分配集群资源,确保高优先级任务优先执行,同时优化资源利用率和作业吞吐量。任务队列调度NUMA亲和性调度Volcano可解决调度程序NUMA拓扑感知的限制,实现以下目标:避免将Pod调度到NUMA拓扑不匹配的节点。将Pod调度到NUMA拓扑的最佳节点。NUMA亲和性调度应用扩缩容优先级策略通过应用扩缩容优先级策略,可以精确控制Pod在不同类型节点上的扩容与缩容顺序,从而实现资源管理的最优化。应用扩缩容优先级策略应用紧凑型缩容策略Volcano调度器会依据设定的紧凑型缩容策略,对由Deployment(也间接包括ReplicaSet)及其他指定工作负载类型管理的Pod进行评分。Pod所在节点的NPU占用率越低,其得分也越低。缩容时,控制器优先移除得分较低的Pod,若存在多个得分相同的Pod,则随机驱逐相应数量的Pod。这样有助于提高后续调度的成功率和整体NPU资源的使用效率。应用紧凑型缩容功能  云原生混部  云原生混部解决方案围绕Volcano和Kubernetes生态,帮助用户提升资源利用率,实现降本增效。功能描述参考文档动态资源超卖根据在线作业和离线作业类型,通过Volcano调度将集群中申请而未使用的资源(即申请量与使用量的差值)利用起来,实现资源超卖和混合部署,提升集群资源利用率。动态资源超卖基于Pod实例画像的资源超卖提供一种超卖算法,能够持续采集节点上Pod的CPU和内存利用率,统计资源使用的概率分布,并在一定置信度下评估节点资源占用。算法综合考虑资源使用的整体水平及波动,能够计算出稳定的超卖量,从而减少资源竞争,避免业务波动引起的Pod频繁驱逐。相比直接基于节点实时CPU和内存利用率的算法,该算法能有效减少超卖量波动,提升对突发资源尖峰的覆盖能力,从而在保障业务性能相对稳定的同时实现资源超卖。基于Pod实例画像的资源超卖CPU Burst弹性限流提供一种可以短暂突破CPU Limit值的弹性限流机制,以降低业务长尾响应时间,可以有效提升时延敏感型业务的服务质量。CPU Burst弹性限流出口网络带宽保障平衡在线业务与离线业务对出口网络带宽的使用,保证在线业务有足够的网络带宽。出口网络带宽保障 更多信息,请访问: 华为云云容器引擎CCE:cid:link_26Volcano云原生批量计算社区:https://volcano.shVolcano GitHub: cid:link_28Volcano云原生批量计算公开课:cid:link_25 添加云原生小助手k8s2222进入技术交流群  
  • [技术干货] Volcano社区网络拓扑感知调度解析:优化AI大模型训练性能
    📝摘要:Volcano云原生批量计算社区在业界率先提出网络拓扑感知调度(Network Topology Aware Scheduling)策略,通过统一的网络拓扑API和智能调度策略,解决大规模数据中心AI训练任务的网络通信性能问题,同时引入了基于节点标签(Label)的 超节点HyperNode 自动发现机制。该功能为用户提供了一种通用且灵活的方式来描述网络拓扑,将复杂的拓扑管理工作转变为简单的节点标签管理,确保在复杂工作负载管理中的实用性和易用性,为AI时代的基础设施提供关键调度支撑。Volcano (https://volcano.sh)是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。作为云原生批量计算领域的事实标准,Volcano已经在AI、大数据及高性能计算 (HPC) 等多种场景中获得广泛应用,吸引了来自30多个国家的800多名贡献者,累计代码提交数万次。Volcano已在国内外60+企业进行了生产落地,赢得了用户的广泛赞誉,为业界提供了云原生批量计算的卓越实践标准与解决方案。本文解析Volcano社区的网络拓扑感知调度能力。早在2025年1月Volcano社区发布的v1.11版本中,社区聚焦AI与大数据的核心需求,推出网络拓扑感知调度、多集群AI作业调度等重磅特性,显著提升AI训练与推理任务的性能。同时,在离线混部与动态资源超卖及负载感知重调度功能进一步优化资源利用率,确保在线业务的高可用性。此外,弹性层级队列为大数据场景提供了更灵活的调度策略。    网络拓扑感知调度:优化AI大模型训练性能   在AI大模型训练场景中,模型并行(Model Parallelism)将模型分割到多个节点上,训练过程中这些节点需要频繁进行大量数据交互。此时,节点间的网络传输性能往往成为训练的瓶颈,显著影响训练效率。数据中心的网络类型多样,如InfiniBand (IB)、RoCE、NVSwitch等,且网络拓扑复杂,通常包含多层交换机。两个节点间跨的交换机越少,通信延迟越低,吞吐量越高。因此,用户希望将工作负载调度到具有最高吞吐量和最低延迟的最佳性能域,尽可能减少跨交换机的通信,以加速数据交换,提升训练效率。为此,Volcano提出了网络拓扑感知调度(Network Topology Aware Scheduling)策略,通过统一的网络拓扑API和智能调度策略,解决大规模数据中心AI训练任务的网络通信性能问题。▍统一的网络拓扑API:精准表达网络结构为了屏蔽数据中心网络类型的差异,Volcano定义了新的CRD HyperNode来表示网络拓扑,提供了标准化的API接口。与传统的通过节点标签(label)表示网络拓扑的方式相比,HyperNode具有以下优势:语义统一:HyperNode提供了标准化的网络拓扑描述方式,避免了标签方式的语义不一致问题。层级结构:HyperNode支持树状层级结构,能够更精确地表达实际的网络拓扑。易于管理:集群管理员可以手动创建HyperNode,或通过网络拓扑自动发现工具维护HyperNode。一个HyperNode表示一个网络拓扑性能域,通常映射到一个交换机。多个HyperNode通过层级连接,形成树状结构。例如,下图展示了由多个HyperNode构成的网络拓扑:叶子HyperNode(s0、s1、s2、s3):子节点为集群中的真实节点。非叶子HyperNode(s4、s5、s6):子节点为其他HyperNode。在这种结构中,节点间的通信效率取决于它们之间的HyperNode层级跨度。例如:node0和node1同属于s0,通信效率最高。node1和node2需要跨两层HyperNode(s0→s4→s1),通信效率较低。node0和node4需要跨三层HyperNode(s0→s4→s6),通信效率最差。💬 HyperNode配置示例以下是一个叶子HyperNode和非叶子HyperNode的配置示例:💬 叶子HyperNode示例:apiVersion: topology.volcano.sh/v1alpha1kind: HyperNodemetadata: name: s0spec: tier: 1 # HyperNode层级,层级越低通信效率越高 members: # 子节点列表 - type: Node # 子节点类型为Node selector: exactMatch: # 精确匹配 name: node-0 - type: Node selector: regexMatch: # 正则匹配 pattern: node-[01]💬 非叶子HyperNode示例:apiVersion: topology.volcano.sh/v1alpha1kind: HyperNodemetadata: name: s6spec: tier: 3 # HyperNode层级 members: # 子节点列表 - type: HyperNode # 子节点类型为HyperNode selector: exactMatch: # 精确匹配 name: s4 - type: HyperNode selector: exactMatch: name: s5▍ 基于网络拓扑的感知调度策略Volcano Job和PodGroup可以通过 networkTopology 字段设置作业的拓扑约束,支持以下配置:mode:支持 hard 和 soft 两种模式。hard:硬约束,作业内的任务必须部署在同一个HyperNode内。soft:软约束,尽可能将作业部署在同一个HyperNode下。highestTierAllowed:与 hard 模式配合使用,表示作业允许跨到哪层HyperNode部署。例如,以下配置表示作业只能部署在2层及以下的HyperNode内(如s4或s5),否则作业将处于Pending状态:spec:  networkTopology:    mode: hard    highestTierAllowed: 2通过这种调度策略,用户可以精确控制作业的网络拓扑约束,确保作业在满足条件的最佳性能域运行,从而显著提升训练效率。  网络拓扑感知调度 (Alpha Release) 在Volcano v1.12 中, 网络拓扑感知调度功能达到 Alpha 发布状态。此功能旨在优化大规模训练和推理场景(如模型并行训练、Leader-Worker 推理)中 AI 任务的部署。它通过将任务调度到同一网络拓扑性能域内,减少跨交换机通信,从而显著提升任务效率。Volcano 使用 超节点HyperNode CRD 来抽象和表示异构硬件网络拓扑,并支持层级结构以方便管理。v1.12 版本集成了以下关键特性:Volcano超节点 HyperNode 自动发现 (HyperNode Auto-Discovery): Volcano 提供了集群网络拓扑的自动发现能力。用户可配置发现类型,系统将自动创建和维护反映集群真实网络拓扑的层级 HyperNode。目前支持 InfiniBand (IB) 网络下通过 UFM (Unified Fabric Manager) 接口获取网络拓扑信息,并自动更新 HyperNode。未来计划支持 RoCE 等更多网络协议。 Volcano超节点 HyperNode 优选策略 (Prioritized HyperNode Selection): 引入了基于节点级别和 HyperNode 级别的打分策略,累加后作为 HyperNode 的最终得分。 节点级别 (Node-level): 建议配置 BinPack 插件以优先填满 HyperNode,减少资源碎片。 超节点HyperNode 级别 (HyperNode-level): 优先选择层级更低的 HyperNode 以获得更优性能,因其涉及的跨交换机次数较少;对于相同层级的 HyperNode,包含更多任务的 HyperNode 得分更高,旨在减少 HyperNode 级别的资源碎片。 支持通过 Label Selector 匹配节点 (Support for Label Selector Node Matching): HyperNode 叶子节点与集群中的物理节点关联,支持以下三种匹配策略: 精确匹配 (Exact Match): 直接匹配节点名称。 正则匹配 (Regex Match): 通过正则表达式匹配节点名称。 标签匹配 (Label Match): 通过标准 Label Selector 匹配节点。  Volcano v1.13 提供更灵活的网络拓扑发现机制  Volcano v1.13 提供更灵活的网络拓扑发现机制,并增强对主流AI计算框架的兼容性。继v1.12 版本中正式推出了网络拓扑感知调度能力,并率先实现了基于 InfiniBand (IB) 网络的 UFM 自动发现机制后,v1.13版本引入了基于节点标签(Label)的 超节点HyperNode 自动发现机制。该功能为用户提供了一种通用且灵活的方式来描述网络拓扑,将复杂的拓扑管理工作转变为简单的节点标签管理。该机制允许用户在 volcano-controller-configmap 中定义拓扑层级与节点标签的对应关系。Volcano 控制器会周期性地扫描集群中的所有节点,并根据其标签自动完成以下工作:自动构建拓扑:根据节点上的一组标签,从上至下(例如:机架 -> 交换机 -> 节点)自动构建出多层 HyperNode 拓扑结构。动态维护:当节点的标签发生变化,或节点被添加、移除时,控制器会自动更新 HyperNode 的成员和结构,确保拓扑信息始终与集群状态保持一致。支持多种拓扑类型:允许用户同时定义多种独立的网络拓扑,以适应不同的硬件集群(如 GPU 集群、NPU 集群等)或不同的网络分区。💬 配置示例:# volcano-controller-configmap.yamlapiVersion: v1kind: ConfigMapmetadata: name: volcano-controller-configmap namespace: volcano-systemdata: volcano-controller.conf: | networkTopologyDiscovery: - source: label enabled: true interval: 10m # 发现周期 config: networkTopologyTypes: # 定义一个名为 topology-A 的拓扑类型 topology-A: # 定义拓扑层级,顺序从上到下 - nodeLabel: "volcano.sh/hypercluster"# 顶层 HyperNode - nodeLabel: "volcano.sh/hypernode" # 中间层 HyperNode - nodeLabel: "kubernetes.io/hostname"# 底层物理节点 通过在 Volcano 控制器的 ConfigMap 中添加 label 源即可启用此功能。以下配置定义了一个名为 topology-A 的三层拓扑结构:顶层 (Tier 2) :由 volcano.sh/hypercluster 标签定义。中间层 (Tier 1) :由 volcano.sh/hypernode 标签定义。底层 :物理节点,由 Kubernetes 内置的 kubernetes.io/hostname 标签标识。当一个节点被打上如下标签时,它将被自动识别并归入 cluster-s4 -> node-group-s0 的拓扑路径下:# 节点 node-0 的标签labels: kubernetes.io/hostname: node-0 volcano.sh/hypernode: node-group-s0 volcano.sh/hypercluster: cluster-s4基于label的网络拓扑自动发现功能具有出色的通用性与灵活性,不依赖于特定的网络硬件(如 IB),因此适用于各类异构集群,并允许用户通过标签灵活定义任意深度的层级结构。它将复杂的拓扑维护工作转变为简单的节点标签管理,实现了自动化,从而显著降低运维成本和出错风险。此外,该机制能够动态适应集群节点和标签的变化,无需人工干预即可实时保持拓扑信息的准确性。📌 使用文档请参考:HyperNode Auto Discovery:cid:link_0相关PR:cid:link_1▍将网络拓扑感知调度能力扩展至 Kubernetes 标准工作负载在Volcano v1.13 版本中,Volcano 的网络拓扑感知调度能力不再局限于 Volcano Job。现在,也可以为 Kubernetes 的标准工作负载(如 Deployment、StatefulSet 等)配置网络拓扑约束。该功能通过 Pod 模板中的注解(Annotation)实现。当为 Deployment 或 StatefulSet 的 Pod 模板添加网络拓扑相关的注解后,Volcano 的 podgroup-controller 会自动为这些 Pod 创建一个PodGroup,并将注解中定义的网络拓扑约束继承到 PodGroup 的规约(Spec)中,从而在调度时应用相应的网络亲和性策略。可以通过以下两个注解来配置网络拓扑感知调度:Annotation Key描述示例值topology.volcano.sh/network-topology-mode定义网络拓扑约束的模式。hard 表示强制约束,Pod 必须满足拓扑要求才能被调度;soft 表示软约束,调度器会尽量满足,但不强制。默认为 hard。"hard"topology.volcano.sh/network-topology-highest-tier指定允许调度的最高网络层级。例如,设置为 "2" 表示 Pod 可以被调度到 2层及以下的HyperNode上,但不能调度到更高层级的HyperNode。"2"💬 Deployment 配置示例以下示例展示了如何为一个 Deployment 配置网络拓扑感知调度。调度器将把该 Deployment 的 Pod 调度到网络层级不超过 2 的节点上:apiVersion: apps/v1kind: Deploymentmetadata: name: network-aware-deploymentspec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app annotations: # 设置网络拓扑为硬约束 topology.volcano.sh/network-topology-mode: "hard" # 设置允许调度的最高网络层级为 2 topology.volcano.sh/network-topology-highest-tier: "2" spec: # 必须指定调度器为 volcano schedulerName: volcano containers: - name: main-container image: nginx:latest resources: requests: cpu: "1" memory: "1Gi" limits: cpu: "1" memory: "1Gi"Volcano社区网络拓扑感知调度能力大大提升了Volcano在复杂工作负载管理中的实用性和易用性,为AI时代的基础设施提供关键调度支撑。更多Volcano社区网络拓扑感知调度能力,可以访问🔗社区地址:cid:link_2  更多云原生技术动向关注容器魔方 
  • [问题求助] CCE Autopilot 是否提供对新兴技术或者趋势的支持和集成?
    CCE Autopilot 是否提供对新兴技术或者趋势的支持和集成?
  • [问题求助] 使用CCE Autopilot进行容器管理时,又哪些安全特性?
    使用CCE Autopilot进行容器管理时,又哪些安全特性?
  • [问题求助] CCE Autopilot 如何与云原生生态进行集成?
    CCE Autopilot 如何与云原生生态进行集成?
  • CCE集群界面的某个节点磁盘监控高达80%以上,而进入云监控界面看到的磁盘使用 率在40%不到
    CCE集群界面的某个节点磁盘监控高达80%以上,而进入云监控界面看到的磁盘使用率在40%不到
  • CCE 集群删除之后相关数据能否再次找回?
    CCE 集群删除之后相关数据能否再次找回?
  • CCE如何确认已创建的集群是否为多控制节点模式?
    如何确认已创建的集群是否为多控制节点模式?
  • [问题求助] CCE 集群如何重置或重装?
     CCE 集群如何重置或重装?
  • CCE如果当前资源配额限制无法满足使用需要,怎么申请
    CCE如果当前资源配额限制无法满足使用需要,怎么申请
  • 华为云云容器引擎CCE:文档内容细打磨,服务上手更轻松
    华为云云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序。华为云云容器引擎CCE匠心打磨使用文档,场景原理、参数说明、操作流程、视频触点、页面样式全面优化,AI实践案例更加丰富,助您高效获取和使用,轻松玩转CCE!   华为云云容器引擎CCE:cid:link_1云容器引擎CCE文档:cid:link_0 
  • [问题求助] CCE 集群创建时的根证书如何更新?
     CCE 集群创建时的根证书如何更新?
  • CCE集群冻结、解冻对业务的影响?
    CCE集群冻结、解冻对业务的影响?