-
Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。在最新发布的v1.10版本中,Karmada新增了工作负载重平衡功能:在某些场景下,资源副本的当前分布状态可能不是最优,但调度器为了减少对系统的冲击会尽可能保持调度结果的惰性,不会轻易改变调度结果;此时,用户可以通过新引入的 WorkloadRebalancer API 针对指定的资源手动触发全新的重调度,以在集群间建立最优的副本状态分布。本版本其他新增特性:解除资源模板名称长度不能超过 63 个字符的限制生产环境中的可用性和可靠性增强 新特性概览 Workload Rebalance一般情况下,工作负载类资源一旦被调度,其调度结果通常会保持惰性,不会轻易改变副本分布状态。即使通过修改资源模板中的副本数或 PropagationPolicy 的 Placement 来触发重新调度,系统也只会在必要时进行最小化的调整,以最大程度地减少对系统的影响。然而,在某些情况下,用户可能希望能够主动触发全新的重调度,完全忽略过去的分配结果,并在集群之间建立全新的副本分布状态,例如:在主备集群模式下,由于主集群故障,应用被迁移至备集群,主集群恢复后,应用希望重新迁移至主集群。在应用级别故障迁移场景下,由于集群资源不足,应用从多个集群缩减到单个集群,相应集群资源充足后,应用希望重新分发到多集群以确保高可用性。对于聚合调度策略,由于资源限制,副本最初分布在多个集群中,当单个集群足以容纳所有副本后,应用希望重新聚合到单集群。因此,本版本引入了工作负载重平衡功能,如果当前副本分布状态不是最优,用户可以按需触发全新的重调度。例如,用户想触发 Deployment/foo 的重调度,只需声明下述 WorkloadRebalancer 资源:apiVersion: apps.karmada.io/v1alpha1 kind: WorkloadRebalancer metadata: name: foo-rebalancer spec: workloads: - apiVersion: apps/v1 kind: Deployment name: foo namespace: default然后,调度器将对该 Deployment 进行重调度。1)如果成功,您将看到以下结果:apiVersion: apps.karmada.io/v1alpha1 kind: WorkloadRebalancer metadata: name: foo-rebalancer generation: 1 creationTimestamp: "2024-05-22T11:16:10Z" spec: ... status: finishTime: "2024-05-22T11:16:10Z" observedGeneration: 1 observedWorkloads: - result: Successful workload: apiVersion: apps/v1 kind: Deployment name: foo namespace: default2)如果失败,例如 Deployment/foo 的 ResourceBinding 不存在,您将得到以下结果:apiVersion: apps.karmada.io/v1alpha1 kind: WorkloadRebalancer metadata: name: foo-rebalancer generation: 1 creationTimestamp: "2024-05-22T11:16:10Z" spec: ... status: finishTime: "2024-05-22T11:16:10Z" observedGeneration: 1 observedWorkloads: - reason: ReferencedBindingNotFound result: Failed workload: apiVersion: apps/v1 kind: Deployment name: foo namespace: default有关此功能的详细描述,请参见用户指南:https://karmada.io/zh/docs/next/userguide/scheduling/workload-rebalancer解除资源模板命名长度的限制由于历史设计原因,资源模板的名称被用作 label 的值,从而加速资源的检索。由于 Kubernetes 限制标签 value 值不能超过 63 个字符,导致用户无法将名称长度超过 63 个字符的资源分发至成员集群中去,间接限制了资源模板名称的长度,严重阻碍了用户将工作负载从旧集群迁移到Karmada。Karmada社区从 v1.8 版本起着手消除这一限制,并在 v1.8 和 v1.9 版本中做了充足的准备工作,以确保使用旧版本 Karmada 的用户可以平滑升级到当前新版本,而不用感知这一变化。更多详情请参见 [Umbrella] 在资源中使用 permanent-id 替换 namespace/name标签:cid:link_4生产环境中的可用性和可靠性增强本版本融合了大量生产级用户的反馈,进行了大量功能性增强以及安全性提升,包括:1)功能增强:支持分发 kubernetes.io/service-account-token type的 Secret 资源优化 PropagationPolicy 降低优先级时的优先级抢占逻辑显著减少 karmada-metrics-adapter 组件的内存使用优化了 karmada-webhook 的启动逻辑,消除了偶现的异常报错2)安全增强:将 google.golang.org/protobuf 从 1.31.0 升级到 1.33.0,以解决 CVE-2024-24786 漏洞问题将 Karmada 证书的 RSA 密钥长度从 2048 升级到 3072,提高秘钥安全性将 text/template 库替换为 html/template,增加 HTML 编码等安全保护功能创建文件时由默认授予 0666 权限改为指定授予 0640 权限,提高文件安全性采取必要措施以消除安全扫描工具的误报,如在使用 karmadactl 删除 token 时调整日志打印内容和消除 gosec 警告 G107 等3)生态集成:为 OpenKruise 中的 CloneSet 资源展示 status.labelSelector,以支持该资源的HPA扩缩容特性在 karmadactl 添加成员集群时,新增支持 OIDC 认证模式相信这些努力将使 Karmada 为用户带来更好的体验!致谢贡献者Karmada v1.10 版本包含了来自32位贡献者的356次代码提交,在此对各位贡献者表示由衷的感谢:贡献者GitHub ID:@a7i@Jay179-sudo@veophi@Affan-7@jwcesign@wangxf1987@B1F030@khanhtc1202@warjiang@calvin0327@laihezhao@whitewindmills@chaosi-zju@liangyuanpeng@wzshiming@chaunceyjiang@my-git9@XiShanYongYe-Chang@dzcvxe@RainbowMango@yanfeng1992@Fish-pro@Ray-D-Song@yike21@grosser@rohit-satya@yizhang-zen@guozheng-shen@seanlaii@zhzhuang-zju@hulizhe@stulzq参考链接[1]Release Notes: cid:link_1[2]WorkloadRebalancer 指南: cid:link_0[3]WorkloadRebalancer 示例教程: cid:link_3[4]Karmada 1.10升级文档: cid:link_2更多云原生技术动向关注容器魔方
-
近年来快速发展的视觉大模型(例如 SAM )在促进高精度的智能感知方面具有很大的潜力。然而,边缘环境中的资源限制往往会限制这种视觉大模型在本地部署,从而产生相当大的推理延迟,导致难以支持自动驾驶和机器人等实时物联网智能感知应用。KubeEdge SIG AI 复旦大学吕智慧团队胡时京在 KubeEdge-Ianvs 上发布了基于大小模型协同推理的云边协同物联网感知方法,通过难例样本挖掘算法将少量难例样本上传云端由视觉大模型处理,大部分简单样本在边缘端由小模型处理,在保证推理时延的情况下提高了应对难例样本的处理效果。代码请见:cid:link_1一、背景智慧城市、物联网( IoT )技术的发展已经在国内外社会中根深蒂固,它们改变了人们日常生活和工作的方式,如自动驾驶、机器人、数字孪生、可穿戴设备和增强现实等。其中大量数据从物理世界生成和收集并由各种人工智能(AI)应用程序处理成用户需要的信息越来越成为了一种发展趋势。据 Gartner 统计,到2025年,物联网等终端设备产生的数据量将达到 79.4 zettabytes(ZB),到2030年,物联网设备数量将达到1250 亿。不断激增的终端设备(如移动设备,物联网设备)产生了海量的数据,由于物联网数据的特点(即容量大、多样性、产生速度快),传统的基于云的物联网模型已经无法满足物联网中智能应用的要求,数据源的高度分散性和广泛分布的人工智能应用要求物联网中的边缘设备具有智能感知的能力,即基于海量物联网数据训练边缘模型并进行高效推理。图1:物联网感知失败案例然而真实世界中的物联网边缘设备往往处在一个动态变化的环境中,例如自动驾驶汽车、机器人等移动边缘设备采集的数据会受其位置变化影响,监控摄像头采集的数据会受时间变化影响。物联网边缘设备采集的数据的分布和特征并非一成不变,在真实物联网边缘环境中普遍存在数据漂移和数据异构的现象。数据漂移和数据异构现象会对物联网边缘设备的智能感知能力造成极大影响,严重者甚至会导致出现人员伤亡以及业务受损。如图1所示,2017年,波士顿动力公司的人形机器人 Atlas 因为演示台所处环境与其训练所处环境相差较大未能正确识别演示台边缘,抱箱摔下演示台,该事件导致其股价大跌。2020年12月,福州中防万宝城导购机器人无法识别扶梯,跌落并撞翻两位客人,造成两人轻伤。2021年3月,特斯拉视觉识别应用误把白色卡车识别为天空,导致撞车造成至少两人丧生,特斯拉市值蒸发约440亿美金。2021年10月,美团无人配送车在送货过程中与一辆私家车相撞,美团被判全责。以上案例充分说明了数据漂移问题和数据异构问题是目前物联网智能感知技术的两大挑战。针对数据漂移问题,现有的解决思路致力于发生数据漂移后对模型在新的数据集上进行重训练使其能适应新的环境变化。然而重训练模型也会导致模型忘记之前学习到的信息,出现灾难性遗忘现象。这导致当物联网边缘设备又回到之前的环境时还需要再重新训练模型,造成了对算力的极大浪费。因此在训练过程中需要让模型具备终身学习的能力,使模型一方面可以不断学习新的数据集中的内容以适应新的环境,另一方面模型也不会大幅度遗忘在旧的数据集上学习到的信息,从而减少再重训练的开销。针对数据异构问题,目前快速发展的视觉大模型,如 Meta 公司发布的 Segment Anything Model(SAM),具有较强的泛化能力,在处理分布外的异构数据时相比传统计算机视觉模型效果较好。因此在物联网感知推理过程中引入视觉大模型是应对数据异构问题的关键解决方案之一。但是以 SAM 为首的大模型由于其参数量较大,难以部署在资源受限的边缘端,只能部署在云端使用。而很多边缘物联网设备,例如机器人、自动驾驶汽车,对推理的实时性要求较高,如果将所有推理样本都上传云端处理,会造成较大的通讯开销,并极大增加推理时延。因此只单独使用在云端部署的 SAM 大模型无法满足实时物联网感知的需求,需要通过云端大模型和边缘小模型的云边协同来解决实时物联网感知的挑战。二、基于大模型的边云协同物联网感知系统实现针对上述物联网边缘环境普遍存在的数据漂移和数据异构问题,我们采用终身学习训练方法动态更新边缘小模型从而使模型适应新的环境,我们在云端部署视觉大模型 SAM 用于处理分布外异构数据从而应对边缘小模型难以处理的难例推理样本。同时考虑到云端部署的 SAM 视觉大模型推理时延较大,难以满足物联网实时感知任务的需求,我们采用基于难例样本挖掘的云边协同策略,将大部分简单推理样本在边缘端由边缘小模型处理,少部分难例推理样本上传云端由云端 SAM 大模型处理,从而在保证推理时延的情况下提高推理准确率。▍2.1 总体架构设计基于大模型的边云协同物联网感知系统总体架构设计如图2所示,边云协同物联网感知系统包括云边协同推理和终身学习训练两部分。云边协同推理模块用于解决物联网感知的数据异构和实时性问题。以 SAM 为首的大模型具有较强的泛化能力,因此在处理分布外异构数据时准确率更高。我们通过基于难例样本挖掘的云边协同策略,将大部分简单样本在边缘处理,只有少部分难例样本才需要上传云端由 SAM 大模型处理,从而提高推理实时性。在云边协同推理部分,我们在边缘节点部署 RFNet 模型和难例样本挖掘算法用于实现在边缘端对简单样本的推理和判断推理样本是否需要上传云端。难例样本挖掘算法根据 RFNet 模型推理的结果将样本分为难例样本和简单样本,简单样本直接输出 RFNet 推理结果,难例样本上传云端处理,从而降低推理时延,提高推理实时性。我们在云端部署 SAM 模型用于对难例样本的推理结果进行优化,从而应对数据异构的问题。优化后的云端推理结果会下载到边缘节点作为难例样本的推理结果输出。SAM 模型可以通过 prompt 的方式以交互的形式对图像进行分割,在本项目中我们参考复旦大学提出的 SSA(Semantic Segment Anything)[1] 方法,用 SAM 模型将图像中所有物体都分割出来从而直接应用 SAM 模型于语义分割任务中。图2:基于大模型的边云协同物联网感知系统架构终身学习训练模块用于解决数据漂移问题。当环境变化导致数据分布发生变化时,原来训练的 RFNet 模型在面对数据分布变化后的样本时推理准确率会出现大幅度下降。终身学习算法通过在新分布的数据上持续训练 RFNet 模型从而提高 RFNet 模型的推理准确率,使之适应数据漂移现象。在终身学习训练部分,我们将上传到云端的难例样本及其云端推理结果存储在 replay buffer 中。当 replay buffer 中样本超过一定数量时,我们基于 replay buffer 中的难例样本对 RFNet 模型进行再训练,从而提高边缘模型应对数据漂移问题的能力。训练后的 RFNet 模型会被下载到边缘节点更新边缘端的 RFNet 模型。基于大模型的边云协同物联网感知系统总体架构设计如图2所示,边云协同物联网感知系统包括云边协同推理和终身学习训练两部分。上述系统架构的优势在于:通过难例样本挖掘,大部分简单样本在边缘节点由 RFNet 模型直接得到推理结果,保证系统可以满足实时性要求。少部分 corner case、难例样本上传云端由大模型 SAM 推理得到更完善的推理结果,提高系统推理平均准确率。通过终身学习训练,边缘端 RFNet 模型可以在大模型 SAM 的监督下从难例样本中学习到一定经验,从而适应边缘端复杂多变的环境。KubeEdge 是目前主流的开源边缘计算平台,其子项目 KubeEdge-Ianvs,作为业界首个分布式协同 AI 基准测试平台,基于 KubeEdge-Sedna 为算法及服务开发者提供全场景可扩展的分布式协同 AI 基准测试,以研发、衡量和优化分布式协同 AI 系统。我们基于 Kubeedge-Ianvs 实现了该系统架构,具体在 Ianvs 中实现的模块如图3所示。图3:在KubeEdge-Ianvs中实现模块我们将难例样本挖掘算法填补在 Ianvs 的未知样本识别模块,其将样本分为难例样本(未知样本)和简单样本(已知样本)。在云端节点基于大模型 SAM 对难例样本的推理在未知样本推理模块中实现,在边缘端基于 RFNet 对简单样本的推理在已知样本推理模块中实现。对于终身学习训练的部分,我们在已知和未知任务处理模块实现,这部分我们延用了 Ianvs 默认的终身学习训练配置。▍2.2 案例分析我们采用在华为深圳工业园区由智能机械狗采集的语义分割机器人数据集 Cloud-Robotics 作为本项目的测试 benchmark。Cloud-Robotics 是首个在真实世界场景中由机械狗实地收集的数据集,因此数据集中的图片都是以机械狗的视角拍摄的,拍摄角度相比 Cityscapes 等自动驾驶语义分割数据集更低,也更贴近实际机器人应用(递送、巡检)。数据集官网链接:cid:link_6。图4展示了在 Cloud-Robotics 数据集中RFNet模型和SAM模型部分的推理结果,不难看出 RFNet 在处理部分 corner case 比如反光(第三排图片)时效果较差,将建筑物识别为天空。然而通过大模型 SAM 推理得到分割完善的 mask 后基于像素级的投票成果将错误识别为天空的部分正确识别为了建筑物。图4:部分实验结果展示我们在[Cloud-Robotics][2] 数据集上进行了实验,为了进一步对比 SAM+RFNet 效果,我们额外选取了 Huggingface 发布的在cityscapes数据集上预训练的[Segformer][3] 模型作为基模型进行测试,测试结果如下表:上表展示了不同算法在 Cloud-Robotics 数据集上对不同类别物体的识别准确率(IoU)。我们将识别物体根据其在数据集中出现的频率分为常见类别和稀有类别两种。从结果中可以看出对于常见类别的 Road、Sidewalk 和 builiding 类物体的识别上,SAM+RFNet 云边协同和 RFNet 效果提升仅有1%左右,这是因为对于识别常见类别的简单任务来说,RFNet 模型的准确率已经很高了,再额外加入 SAM 大模型也没有太多提升空间。而对于园区中出现较少稀有类别的 Car、Terrain 类物体, SAM+RFNet 相比 RFNet 提升平均超过20%以上,这是因为对于识别稀有类别的难例任务来说,RFNet 模型处理效果不好,而 SAM 模型更擅长处理。总体来说, SAM+RFNet 云边协同相比只用RFNet准确率提升了8%以上,证明了我们提出的基于大模型的边云协同物联网感知系统的有效性。同时可以看出使用 Segformer 作为基模型的结果则相差很多,这主要是因为 Segformer 是在 cityscapes 数据集上预训练的,而 Cloud-Robotics 数据集中存在 cityscapes 数据集中没有的标签,同时数据集的分布差别较大(Cloud-Robotics 面向半封闭工业园区,cityscapes 面向开放世界)导致了 Segformer 推理结果较差。在Cityscapes 数据集上预训练的 Segformer 模型在 Car 类物体识别上准确率较高,这主要是因为 Cityscapes 数据集是面向开放世界的语义分割数据集,其中 car 类物体出现频率更高。下图展示了 RFNet 和 Segformer 的部分推理结果对比。图5:不同模型效果展示如图5所示,可以看出因为 Segformer 在分类时就将整个天空都识别为了建筑,因此即便 SAM 推理的结果中将天空正确切割出来了,最后 SAM+Segformer 的推理结果中天空仍然是分类错误的。这告诉我们 SAM 大模型不能解决一切问题,最终推理结果还是依赖于使用的小模型推理标签准确。因此即便在使用大模型进行云边协同推理时,对边缘端小模型进行终身学习更新仍然是必要的。三、基于KubeEdge-lanvs的使用教程在这章中我们通过运行 Ianvs 终身学习的 cloud-robotics 样例向大家讲解基于 KubeEdge-Ianvs 实现大模型边云协同物联网感知的基本流程。Ianvs 安装流程以及终身学习更详细的介绍可以参考:Ianvs-lifelong-learning-tutorial[4]。首先我们需要配置好 Cloud-Robotics 的数据集,先创建数据集的文件夹,注意如果你把数据集放到别的位置,本教程中的部分路径配置也要一并修改。mkdir /data cd /data mkdir datasets cd datasets download datasets in cid:link_6download.html配置好数据集后,我们可以准备运行示例代码了。Cloud-Robotics 示例运行的代码放在/ianvs/project/ianvs/examples/robot/lifelong_learning_bench/semantic-segmentation下,我们首先要配置 python 路径(这里如果 Ianvs 安装位置不一样的话需要更改路径):export PYTHONPATH=$PYTHONPATH:/ianvs/project/ianvs/examples/robot/lifelong_learning_bench/semantic-segmentation/testalgorithms/rfnet/RFNet然后我们需要去安装 SAM 大模型:cd /ianvs/project git clone https://github.com/facebookresearch/segment-anything.git cd segment-anything python -m pip install -e .下载模型参数:wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth为了保存模型推理结果,我们需要按照以下指令安装 mmcv 和 mmdetection:python -m pip install https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.0/mmcv-2.0.0-cp39-cp39-manylinux1_x86_64.whl cd /ianvs/project git clone https://github.com/hsj576/mmdetection.git cd mmdetection python -m pip install -v -e .在机器配置性能不足以运行 SAM 模型的情况下,我们为 Cloud-Robotics 数据集中的所有 SAM 推理结果准备了一个缓存。你可以从这个链接 [5]下载缓存,并把缓存文件放在“/ianvs/project/”中:cp cache.pickle /ianvs/project通过使用缓存,可以在不安装 SAM 模型的情况下模拟基于大模型的边云协同推理。除此之外,我们还在这个链接 [6]中提供了一个预训练的 RFNet 模型,如果你不想从零开始训练 RFNet 模型,可以使用我们预训练的 RFNet 模型:cd /ianvs/project mkdir pretrain cp pretrain_model.pth /ianvs/project/pretrain in /ianvs/project/ianvs/examples/robot/lifelong_learning_bench/semantic-segmentation/testalgorithms/rfnet/RFNet/utils/args.py set self.resume = '/ianvs/project/pretrain/pretrain_model.pth'上述所有配置完成后,执行下面指令即可进行基于 SAM 大模型的边云协同推理:cd /ianvs/project/ianvs ianvs -f examples/robot/lifelong_learning_bench/semantic-segmentation/benchmarkingjob-sam.yaml相关资料:[1] SSA(Semantic Segment Anything): cid:link_0[2] Cloud-Robotics: cid:link_6[3] Segformer: cid:link_2[4] Ianvs-lifelong-learning-tutorial: cid:link_5[5] cid:link_3[6] cid:link_4更多云原生技术动向关注容器魔方
-
华为云隆重推出云容器Serverless产品CCE Autopilot,引领容器服务进入全面“自动驾驶”的新时代。CCE Autopilot以其创新的免运维特性,为您的容器服务提供全面优化的Kubernetes兼容性,让您专注于核心业务的创新与实现。 ▍华为云持续投入Serverless基础设施,简化运维管理,释放创新潜力 在云计算的浪潮中,容器技术以其轻量级和高效性,成为企业IT架构转型的强劲动力。然而,随着业务的快速发展,传统的容器服务(Serverful)逐渐暴露出一系列问题:运维管理复杂、弹性速度慢、成本控制困难,这些都严重制约了企业的创新步伐。运维管理复杂:用户需要手动管理底层服务器的资源分配和扩展,不仅涉及到复杂的容量规划和资源调度,还涉及到持续的节点监控、故障排查、系统升级等运维活动。运维成本高,需投入大量人力和物力资源。弹性速度慢:用户需制定节点和负载的弹性联合策略,容器弹性扩容通常需要提前对工作节点进行扩容,过程通常需要分钟级别的等待,影响效率和响应速度。成本控制困难:容器节点需要预先分配资源,当资源未被充分利用时,会造成资源浪费,且高负载情况时可能资源不足,难以实现成本效益最大化。华为云容器引擎服务深刻洞察行业痛点,致力于Serverless基础设施的研发与创新,为用户提供全面优化的负载支持。面对独立资源池的管理和运营挑战,华为云容器服务采用Serverless融合底座,实现CPU、内存、GPU等资源的池化管理,提升资源灵活性和可扩展性。基于该融合资源底座,我们推出CCE Autopilot产品,用户只需管理容器生命周期,享受由融合资源池统一管控的高效率服务,无需过度关注节点负载或资源池承载能力,为用户提供一个灵活且易于管理的计算环境,简化运维管理,释放创新潜力。▍CCE Autopilot: 实现k8s集群托管免运维,加速应用现代化CCE Autopilot是云容器引擎服务推出的Serverless版集群,为用户提供免运维的容器服务,并提供经过优化的Kubernetes兼容能力。在传统的CCE集群模式中, Kubernetes的master节点由华为云托管,用户需要对节点和应用进行统一管理。这要求用户具备一定的Kubernetes管理知识,以便有效地维护和扩展其容器化应用。在CCE Autopilot模式下,华为云不仅托管了k8s的控制节点,还托管了工作节点,用户无需购买节点即可部署应用,这意味着用户只需要关注应用业务逻辑的实现,可以大幅降低运维成本,提高应用程序的可靠性和可扩展性。对比CCE/CCE turbo集群,CCE Autopilot集群核心演进如下:产品Serverless化:增加集群工作节点托管,实现集群全托管,用户无需对节点的部署、管理和安全性进行维护,集群规格自动弹性伸缩。资源池化:采用华为云Serverless融合资源池,实现CPU、内存、GPU等资源的池化管理,减少资源碎片,容器资源按需使用。性能全面优化:通过动态预热技术进行资源池预热,资源供给加速,容器秒级弹性,根据负载规模自动扩缩。▍CCE Autopilot关键能力CCE Autopilot通过以下关键能力,重新定义了容器服务的管理和运维,助力企业轻松应对业务挑战,加速创新步伐。智能可靠的集群免运维体验CCE Autopilot通过智能化版本升级、漏洞自动修复和智能调参等技术,给用户提供更稳定、更安全、更智能的集群使用体验。作为全托管的Serverless解决方案,它简化了容量规划和节点购买流程,用户无需管理和维护底层资源设施,大幅减少了运维工作量。这种开箱即用的产品形态,让用户能够专注于核心业务逻辑的开发和部署。持续迭代的极致弹性性能CCE Autopilot以极致性能为核心,联合底层服务构建统一Serverless容器资源底座,通过多级资源池预热技术,精准满足客户多元异构的资源需求,并持续迭代优化性能。无论是面对突发流量、季节性波动还是长期增长,用户无需提前规划和预留资源,实现容器秒级弹性,根据负载规模自动进行扩缩,确保业务的连续性和性能的最优化。用户可以在短时间内快速上线新应用或服务,快速响应市场变化。全面兼容的云原生开源生态CCE Autopilot将Serverless架构优势与云原生开源生态相结合,提供全面兼容Kubernetes生态的Serverless集群,使用户能够根据需求灵活扩展功能。它支持Kubernetes社区版本的全跟随和自动更新,确保用户及时获得最新技术更新和安全补丁,保持技术前沿。未来将持续集成包括安全、应用管理、弹性、CI/CD、AI在内的主流开源软件如OPA Gatekeeper、Knative等,提供开箱即用的应用框架,让客户更加轻松的管理自己的Kubernetes应用。灵活规格与按秒计费CCE Autopilot旨在提供一种灵活、高效且具有成本效益的云服务体验。利用自动化技术,产品能够实现集群规格的动态调整,并且取消了传统的档位限制,用户可以享受从0.25vCPU起步的灵活规格档位,根据自己的具体需求优化资源配比。采用按量计费模式,用户按照实际使用的资源量(以秒为单位)支付费用,实现真正的按需付费,减少不必要的成本支出。安全隔离与自动预警CCE Autopilot基于QingTian架构,实现虚拟机级别的安全隔离能力,并通过专属的container OS提供精简且安全的运行环境。其底层统一资源池设计支持快速故障隔离和修复,确保应用的持续安全稳定运行。系统内置的自动预警机制能够及时识别并预防管控面过载风险,管控组件具备自动弹性能力,在负载增加时能够自动扩展,进一步保障服务的稳定性和可靠性。▍CCE Autopilot典型应用场景华为云CCE Autopilot以其Serverless特性,为多样化的业务场景提供了强大的支持和便利。以下是CCE Autopilot的典型应用场景:SaaS/企业平台的运维与迭代升级CCE Autopilot适合作为SaaS平台和企业平台的坚实底座,尤其适用于需要频繁进行升级和迭代的大型企业资源池。传统模式客户需自运维自升级,运维人力成本巨大。CCE Autopilot的自动化运维减少了对人力资源的依赖,显著降低了运维成本。且对互联网金融等对安全合规性有严格要求的行业,传统驾驶模式客户自运维,OS等保能力建设困难,CCE Autopilot的托管服务不仅简化了节点管理,还提升了系统的安全性和合规性,使企业能够更专注于核心业务的创新与发展。业务高效弹性伸缩针对互联网文娱、社交和网约车等具有明显流量波动的业务,如春节期间流量激增的情况,CCE Autopilot提供的智能资源弹性解决方案,能够根据业务特征和流量预测,动态调整资源配置。这种基于业务感知的弹性策略,避免了传统定时弹性策略中的资源浪费,实现了资源供给与业务需求的高效匹配,帮助企业在保持业务连续性的同时,优化了成本结构。成本优化配置CCE Autopilot为有成本优化诉求的企业用户提供了灵活的资源配置方案。它满足了用户对低成本学习、资源灵活配置的需求,同时支持业务量的自动扩缩,以适应业务的快速增长。CCE Autopilot确保了即使在资源需求较小的初期阶段,用户也能获得高可靠性和性能的服务,随着业务的扩展,资源可以无缝扩展,满足企业对成本效益和业务连续性的需求。▍如何使用CCE Autopilot集群进入华为云控制台,选择云容器引擎CCE产品。在控制台界面,选择购买集群,选择CCE Autopilot集群类型,再进行基础的网络插件等配置,便可进行CCE Autopilot集群创建。集群创建完成后,用户将进入集群的管理界面,在这里可以直接访问Kubernetes资源管理等功能。CCE Autopilot相较于CCE集群,其显著的特点在于省略了节点、节点池管理内容,这得益于产品侧提供了基础设施全托管服务。尽管如此,用户仍然可看到完整的Kubernetes控制面信息。CCE Autopilot的购买和使用详情可查看CCE Autopilot集群用户指南。▍总结华为云CCE Autopilot以其Serverless架构,引领容器服务进入全新时代。它通过免运维、动态资源管理、智能预测和自动化运维,不仅极大简化了IT管理,还显著降低了运营成本,提高了资源的利用效率。同时,CCE Autopilot的兼容性保证了与Kubernetes生态的无缝对接,助您敏捷应对市场,加速创新步伐。邀请您携手华为云CCE Autopilot,开启企业数字化转型的新篇章,共同迎接更加高效、智能的未来!容器活动专场:cid:link_1云容器引擎 CCE
-
北京时间2024年5月16日,Kmesh 正式进入 CNCF 云原生全景图,位于 Service Mesh 类别下。CNCF Landscape 在云原生实践过程中的每个环节帮助用户了解有哪些具体的软件和产品选择,Kmesh 进入 CNCF Landscape,成为了 CNCF构建云原生服务网格最佳实践中的一环。Kmesh:业界首个内核级Sidecarless流量治理引擎▍eBPF和Sidecarless是服务网格的未来近年来服务网格逐步流行,但sidecar架构在资源开销、升级部署、时延等方面仍存在挑战,如何消减代理开销,构建sidecarless的服务网格已成为业界共识。Kmesh从立项之初,就瞄准网格痛点问题,创新性的提出业内首个内核级sidecarless流量治理引擎,通过eBPF + 可编程内核技术将L4~L7治理下沉OS,治理过程无需经过代理组件,实现服务网格内服务通信路径多跳变一跳,彻底消除代理开销,真正实现网格治理sidecarless化。Kmesh架构图▍Kmesh优势高性能内核中原生支持 L4~L7 流量治理功能,网格内微服务转发时延降低60%,微服务启动性能提升40%;低开销微服务中无需部署sidecar,服务网格数据面开销降低70%;高可用内核流量治理不会截断连接,组件升级、重启完全不影响业务已有连接;零信任网络支持基于内核mTLS构建零信任网络;安全隔离基于eBPF的虚机安全,且具备cgroup级治理隔离;灵活治理模式除了全内核治理形态,Kmesh还支持四七层治理分离架构,内核eBPF和waypoint组件分别处理L4和L7流量,允许用户逐步采用Kmesh,从而实现从无网格->安全L4治理->L7治理的平稳过渡;平滑兼容与Istio无缝集成,支持xDS协议标准。目前同时支持Istio API和Gateway API,可以与现有sidecar协同工作。为什么选择KmeshKmesh首先是一种Sidecarless的网格架构模型,目前Sidecarless模式广受欢迎。无论是Istio社区还是Cilium社区都在在采用这种架构模型,另外广大用户非常认可Sidecarless。与Sidecar相比,Sidecarless没有资源占用的开销,同时解耦应用和代理的生命周期,并且打破一一绑定的关系,部署、维护更加简单。Kmesh创新性的采用eBPF技术在内核态进行流量治理,使得流量的治理随流进行。好处是不会截断业务的连接,大大减少了流量路径上的连接数,进而降低应用访问的时延。在用户态进行流量治理的一个比较大的弊端是组件的升级会导致业务的流量受损,Kmesh通过可编程内核技术,完好的避开了这一点。目前Kmesh这方面具有业界压倒性的优势,我们充分看到了eBPF的无限可能,未来基于eBPF可以进行更多的网络创新。Kmesh还提供了另一种高级的模式,通过四七层分离,提供丰富的L7治理功能。四七层分离能够提供更加细粒度的物理隔离,不同租户,不同命名空间或者不同的服务均可以划分,独享七层代理waypoint。waypoint还可以根据业务流量,进行动态扩缩容,方便提供全托管。我们看到waypoint不同于传统的中心式网关,不存在单点故障。由此,我们坚定的认为未来Sidecarless模式的理想架构,一定是eBPF技术和waypoint组合,既要减少资源消耗,又要降低时延。在节点上通过eBPF进行L4和简单的L7流量治理,至于高级的、复杂的七层协议则转发到waypoint治理。加入社区贡献Kmesh由华为发起, openEuler社区孵化,当前作为独立项目在GitHub托管,为用户提供极致性能的流量治理技术方案。华为是中国最早参与服务网格的厂商,早在2018年华为就开始投入Istio社区,常年在Istio社区贡献保持亚洲第一,并且自首届以来持续拥有社区Steering Committee席位。华为在服务网格领域的探索历程我们希望借助在Istio社区长期的积累,始终以开放中立的态度发展Kmesh,打造Sidecarless服务网格业界标杆方案,服务千行百业,促进服务网格健康有序的发展。Kmesh当前正处于高速发展阶段,我们诚邀广大有志之士加入!Kmesh社区地址:cid:link_3CNCF云原生全景图Cloud Native Computing Foundation,云原生计算基金会(以下简称CNCF)是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。云原生技术通过一系列的软件、规范和标准帮助企业和组织,在现代的动态环境(如公共云、私有云和混合云)中构建和运行敏捷的、可扩展的应用程序。CNCF 发布了云原生全景图(CNCF Landscape),旨在帮助企业和开发人员快速了解云原生体系的全貌,帮助用户选择云原生实践中的恰当的软件和工具,因此受到广大开发者和使用者的关注和重视。参考链接[1]CNCF Landscape: cid:link_4[2]Ambient Mesh介绍: cid:link_0[3]华为云ASM: cid:link_1[4]Kmesh快速上手: cid:link_2添加小助手k8s2222回复Kmesh进入技术交流群
-
企业软件开发困局随着信息化的进程不断加速,带来的各种业务应用、平台应用等软件资产的复杂度也快速上升。随之而来的信息化基础设施能力与软件工程全生命周期的管理也会变得越来越复杂,数字化转型、云原生、持续交付的口号随之升起。千行百业都在响应数字化转型的号召以提升业务效率、企业竞争力或是市场竞争力。但是企业在转型的过程中却举步维艰。往往原因有以下几点:流程固化,牵一发而动全身:原有的流程已经制定多年,相关人员也已经习惯这套流程。突然的规则转变以及带来的相关风险无人愿意主动承担。部门墙明显,无法快速协同:在金融等行业中,每个部门的成员往往都是统一职责的。如业务部门,只负责市场运营、项目需求管理等;研发部门,只负责开发以及测试;运维部门,只负责平台的运维、基础设施的维护等。一个业务软件的版本迭代,需要从多个部门层层流转,但部门与部门之间的沟通又不彻底,出现问题也容易互相牵扯,最终导致软件需求交付效率的大大下降。严谨的网络环境管理却又松散的制品管理:网络部门严格管理着各个环境之间的网络访问逻辑,一般情况下,开发人员只能访问开发环境;而且开发、测试、准生产以及生产环境之间网络都是不互通的。在没有强有力的政策干预下,可能会出现各个环境都独立一套代码、制品仓库,更糟糕的是,可能不同的软件产品线都独立管理各自的代码、制品仓库。因此在阶段流转时,需要通过传统的拷贝方式去做流转传递,带来了额外的管理成本,也更容易引入人为风险。过多的编外人员带来的各种散乱工具链:在软件研发部门可能存在多方外包人员,而每一方外包人员都有各自熟悉的软件开发工具,代码仓库有些使用Gitlab,有些使用Gitea;制品仓库有些使用nexus,有些使用jforg;甚至构建工具都不能统一,有用Jenkins的,也有本地构建的。这也带来了管理上的巨大麻烦。显而易见的困局,企业在数字化转型过程中面临流程固化、部门墙明显、制品管理松散和工具链混乱等问题,导致软件需求交付效率下降。需要打破原有流程和部门墙,建立统一的管理体系,加强制品管理和工具链整合,以提高软件需求交付效率。破局之法:DevOps面对以上重重现状和困难,我们迎来了曙光——DevOps。DevOps最初诞生于互联网企业。DevOps作为一种文化、哲学和实践的集合,自从诞生以来,就一直在不断地进化和扩展。它的定义以及理念大家都耳熟能详:打破部门墙、紧密合作、自动化、小步快跑、敏捷迭代等等。它是一种文化宣言,提及了方法论,每个企业或者行业都能够结合自身实际情况去操作实施。核心理念:变更的快速响应:DevOps支持需求的快速更改和新功能的快速部署。通过自动化构建和部署流程,开发团队可以快速地将代码从开发环境推送到生产环境。持续反馈:通过持续集成和持续部署,可以确保在开发周期的任何阶段捕获问题,以及在生产过程中立即收集用户反馈,然后快速将这些反馈整合到产品迭代中。跨功能协作:DevOps鼓励开发团队、QA团队和运维团队从需求收集的初期就开始紧密合作,以确保全方位理解和满足用户需求,并从整个软件交付流程中消除障碍。原则优化:DevOps的实践着重于自动化和精益原则,包括尽早消除浪费,确保需求的清晰性和简洁性,以及提供最大的价值。从核心理念就能够看出,DevOps文化实践需要有统一的软件工程工具链,所有相关人员都能够在DevOps平台上执行各自的工作,实现部门之间通力协作和重复流程的全面自动化。上图展示了DevOps的相关角色以及整体工作流程。一个较为完整的DevOps全流程工具链便呼之欲出:从基础设施的管理、项目管理,再到代码管理和持续交付,最后是持续运维。除却文化理念,DevOps的核心是自动化流水线工具,实现了自动化持续交付,而持续交付的核心是持续集成(CI)和持续部署(CD)。CI/CD共同构成了现代软件开发的核心实践,旨在促进软件的快速迭代和高质量交付。其中,持续集成主要关注开发阶段的频繁合并和测试,而持续部署则扩展了这一过程,涵盖了代码从集成到被部署到生产环境的整个流程。两者都是自动化的关键实践,有助于实现DevOps的目标。遵循理论引导并结合实际情况,我们归纳了针对金融等行业的破局三板斧。DevOps专业团队指导,打破固有流程在金融等行业并不缺乏优化现有流程的勇气,只是没有明确的目标以及专业指导。当DevOps的呼声以及发展越来越强大时,国内涌现出了很多专业的DevOps专家咨询团队,他们能够结合企业的实际现状给出最优解,在组织架构不调整的情况下保障以尽可能小的变更达到最大的效果,消除企业顾虑。统一的DevOps工具链平台,打破部门墙,规范研发流程我们发现绝大多数企业都无法做到为每一个项目划分全功能团队(从市场、需求到研发、测试最后到运维),往往都是独立的市场部、研发部和运维部。这天然的形成了沟通与阶段流转之间的部门墙,由于更改现状牵扯太大,我们便通过应用DevOps的理念,建立统一的DevOps工具链平台,对当前项目的全生命周期进行管理。针对每一个原始需求,从需求记录、分析、分配到后续的开发、测试、验证及最终上线,都能被相关人员看到。阶段的流转也能够在相关平台上直接操作和通知,杜绝冗长低效的跨部门流程。我们提倡相关人员使用DevOps平台的同时,梳理最佳实践,进行定期培训,潜移默化的让研发流程变得统一和规范。在严谨的网络环境内搭建统一的核心资产库核心资产库的统一有必要性,各个项目组成员,即使在不同的应用环境下,也不能单独建立。如代码仓库,不能在开发环境和测试环境各有一套。我们需要统一的核心资产库去践行DevOps的理念。该库需要打通从开发到生产环境的网络连接,并通过严格的权限控制,来实现安全合规。行业困局的解决方案为了满足理论支撑,我们基于华为云UCS作为容器平台底座,结合软通动力应用交付平台来实现行业云原生数字化转型的最佳解决方案。华为云UCS(Ubiquitous Cloud Native Service)是业界首个分布式云原生产品,为企业构建云原生业务部署、管理、应用生态的全域一致性体验 ,实现客户在使用云原生应用时,感受不到地域、跨云、流量的限制,让云原生的能力进入企业的每一个业务场景,加速千行百业拥抱云原生。而软通动力应用交付平台是一款持续交付产品,帮助企业快速建立稳定软件发布的内部开发者平台与 DevOps 文化,为开发者提供云原生应用运行环境,开发者通过平台的自助服务能力,进行应用的构建、部署、验证、运维等生命周期管理操作,降低应用开发者使用云原生技术的门槛,提升应用的部署和运行质量。平台支持UCS云原生服务中心快速安装,用户只需要通过页面表单的填写即可快速部署平台,实现开箱即用。客户通过UCS对多方集群执行统一纳管,从而达到对多个集群的统一治理,实现配置管理、容器迁移、策略中心、流量治理和容器智能分析。这在网络环境严苛的金融等行业中是非常便利的。云原生服务中心精选了各种成熟可靠的开源工具,为客户提供了统一便捷的安装体验,其中的多种工具能够和应用交付平台实现集成联动效果,如SonarQube和ArgoCD。他们支持配置对接到应用交付平台的持续集成流水线或安全测试编排中,实现多个工具平台的串联,打破数据孤岛。整体解决方案中,实现DevOps的核心便是华为云UCS提供的容器底座以及应用交付平台提供的集成和自动化能力,两者相辅相成。原本的应用交付平台得到升华。通过UCS的特性,我们可以实现多集群的统一联邦管理,让快速搭建双活、主备等高可用应用部署架构变得轻而易举。这种架构极大地提升了运维能力,使构建发布过程实现全面自动化,从而提高交付质量、缩短交付周期、保持技术路线一致性以及规范资源使用。值得一提的是,UCS云原生服务中心的引入使得企业能够快速安装和使用诸如ArgoCD、SornaQube等热门开源工具平台。这不仅丰富了企业的技术选择,还增强了企业的灵活性,使企业在快速变化的市场环境中始终保持竞争力。将UCS与软通动力应用交付平台相结合,企业将获得一套更高效、更可靠的运维解决方案。这套方案可以全面提高企业的运维能力,降低人工干预成本,提高交付质量,并确保技术路线的一致性。在此基础上,通过UCS云原生服务中心的引入,企业还能够快速接入各类热门开源工具平台,进一步提升企业的灵活性。这套解决方案将助力企业在激烈的市场竞争中脱颖而出,实现业务的持续发展。方案落地实践与价值某资产管理公司成立10年期间累积了不少软件资产,过于陈旧的研发体系以及日益膨胀的原始需求,使得他们迫切的想要进行云原生改造,实践DevOps来得到交付效率上的提升。在入场调研的过程中,我们发现其所面临的困境和金融业企业困境如出一辙:各个环境的割裂、没有统一的代码仓库、阶段流转靠U盘拷贝、散乱的依赖管理、缺失自动化构建能力以及没有统一规范的软件研发流程,全靠各个团队自由发挥。云原生DevOps专家团队面对这种实际场景,针对性的给出了架构设计和迁移改造方案。容器化改造客户原先的系统服务都是虚拟机部署,一个微服务需要单独规划一台4U8G的虚拟机,如此配置不易弹性伸缩且有巨大的资源浪费。专家团队顺势提出容器化改造,并且使用业界首个分布式云原生产品华为云UCS作为容器平台底座,同时给出微服务容器化改造的最佳实践,帮助客户快速迁移。统一代码仓库和制品仓库令人惊讶的是,客户没有统一的代码仓库和制品仓库,多个团队之间的代码资产各自管理。有些使用Git,有些使用SVN,更有甚者就未使用代码仓库。因此在代码从开发环境转换到测试环境、准生产环境时,通过U盘拷贝的形式,制品依赖更是如此。所以改造的下一步是统一必备的软件开发工具。综合考量各种因素后,我们为客户提供了Gitlab代码仓库、SWR镜像仓库以及nexus依赖仓库。统一的DevOps平台有了容器平台、代码仓库、镜像仓库等基础设施和软件开发平台,实践DevOps需要将这些平台结合起来,并提供持续交付的能力。软通动力应用交付平台完美匹配,其灵活的集成管理能力串联了多个研发工具链,给客户提供高效便捷的流水线配置体验。研发流程优化当基础配置全部准备完成后,此时需要流程规范和最佳实践进行指导。华为云UCS专家团队结合资产管理公司的组织架构以及业务结构,为客户量身定制了基于新平台的研发流程。从理论出发结合实际为客户实现云原生数字化转型。经过客户及华为云云原生团队的共同努力,客户业务最终完美的迁移到容器环境中。经过一段时间的学习、适应和磨合,客户按照DevOps的文化理念进行迭代、统一代码和制品仓库以及配置自动化流水线。据效能统计:人力管理成本平均减少70%、构建部署的频率提升十余倍、更改失败率降低、平均交付周期以及资源利用率都有了巨大的优化,顺利打破金融等行业的云原生、数字化转型困局。访问链接,体验华为云分布式云原生UCS:cid:link_0更多云原生技术动向关注容器魔方
-
KubeEdge社区v1.17.0 版本正式发布。新版本为边缘节点和设备带来了更多的新能力,同时持续在易用性上做了提升。KubeEdge v1.17.0 新增特性:支持边缘 Pods 使用 InClusterConfig 访问 Kube-APIServerMapper 支持流数据上报支持边缘子模块自启动引入 keadm ctl 命令,支持在边缘查询和重启 pod易用性提升:基于 Keadm 的部署能力增强Mapper 框架添加 MySQL 数据库升级 K8s 依赖到 v1.28 新特性概览 ▍支持边缘 Pods 使用 InClusterConfig 访问 Kube-APIServerKubernetes 支持 Pods 使用 InClusterConfig 机制直接访问 Kube-APIServer,然而在边缘场景,边缘 Pods 和 Kube-APIServer 通常不在一个网络环境下,无法直接访问。在1.17.0 新版本中,通过开启 MetaServer 和 DynamicController 模块,边缘 Pods 同样可以使用 InClusterConfig 机制直接访问 Kube-APIServer。该特性在本版本中作为 Alpha 特性发布,如果你需要使用,您需要开启边缘 List-Watch 开关并配置 requireAuthorization的featureGates。在使 keadm init 启动 CloudCore 时,指定 cloudCore.featureGates.requireAuthorization=true 以及 cloudCore.modules.dynamicController.enable=true。启动 EdgeCore 后,按如下修改 edgecore.yaml 后重启 EdgeCore。apiVersion: edgecore.config.kubeedge.io/v1alpha2 kind: EdgeCore featureGates: requireAuthorization: true modules: ... metaManager: metaServer: enable: true更多信息可参考:cid:link_3cid:link_4▍Mapper 支持流数据上报 1.17 版本中,针对当前 Mapper 只能处理离散型的设备数据,无法处理流数据的问题,为 Mapper-Framework 提供视频流数据处理的能力。在新版本中,能够支持 KubeEdge 管理边缘摄像头设备,获取摄像头采集的视频流,并将视频流保存为帧文件或者视频文件,增强 KubeEdge 边缘设备管理能力。边缘摄像头设备管理1.17 版本提供基于 Onvif 协议的内置 Mapper,实现 Onvif 设备驱动功能,能够根据用户配置文件中的定义连接摄像头设备,获取设备的鉴权文件与 RTSP 视频流,将 Onvif 摄像头设备纳管进 KubeEdge 集群。Onvif 设备的一个示例 device-instance 配置文件如下:apiVersion: devices.kubeedge.io/v1beta1 kind: Device metadata: name: onvif-device-01 namespace: default spec: deviceModelRef: name: onvif-model # need to be the same as the model name defined in onvif-model.yaml protocol: protocolName: onvif configData: url: 192.168.168.64:80 # Replace it with the address of your own onvif camera userName: admin # Replace it with the username of your own onvif camera password: /etc/secret/password # Fill in the fields according to your secret.yaml nodeName: edge-node # Replace it with your edge node name properties: - name: getURI visitors: protocolName: onvif configData: url: 192.168.168.64:80 userName: admin password: /etc/secret/password dataType: string视频流数据处理新版本增强 Mapper-Framework 数据面能力,内置流数据处理功能。用户能够在 device-instance 文件中进行配置,将边缘摄像头设备上报的视频流截取保存为视频片段文件以及视频帧文件,流数据处理的 device-instance 文件示例如下:apiVersion: devices.kubeedge.io/v1beta1 kind: Device metadata: name: onvif-device-01 ... properties: - name: saveFrame # Convert video stream into frame visitors: protocolName: onvif configData: format: jpg # Frame file format outputDir: /tmp/case/ # Directory for output frame files frameCount: 30 # Number of output frames frameInterval: 1000000 # Time interval between frames (The unit is nanoseconds) dataType: stream - name: saveVideo # Convert video streams into video clips visitors: protocolName: onvif configData: frameCount: 1000 # The number of frames the video clip contains format: mp4 # Video clip format outputDir: /tmp/case/ # Directory for output video clip videoNum: 2 # Number of video clips dataType: stream更多信息可参考:cid:link_5cid:link_6cid:link_2▍支持边缘子模块自启动由于配置或者可恢复的环境问题,例如进程启动顺序等,导致 EdgeCore 启动失败。例如,当 containerd.socket 没有就绪时,Edged 启动 Kubelet 失败会导致 EdgeCore 直接退出。在新版本中,我们改进了 Beehive 框架,支持边缘子模块重启。用户可以通过启动 moduleRestart featureGates,将 EdgeCore 的子模块设置为自动重启,而不是整个 EdgeCore 退出。该特性在本版本中作为 Alpha 特性发布,如果你需要使用,您需要配置 moduleRestart 的 featureGates。apiVersion: edgecore.config.kubeedge.io/v1alpha2 kind: EdgeCore featureGates: moduleRestart: true 更多信息可参考:cid:link_7cid:link_6▍引入 keadm ctl 命令,支持在边缘查询和重启 pod当边缘节点离线时,我们无法通过 kubectl 查看边缘节点上的 pod,在 1.17 中可以在边缘节点上通过 keadm ctl get/restart pod [flag] 对 pod 进行查询或重启。如果需要使用该特性,您需要开启 metaserver 开关。keadm ctl get pod 的可选参数如下:[root@centos-2 bin]# keadm ctl get pod -h Get pods in edge node Usage: keadm ctl get pod [flags] Flags: -A, --all-namespaces If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace -h, --help help for pod -n, --namespace string Specify a namespace (default "default") -o, --output string Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file, custom-columns, custom-columns-file, wide) -l, --selector string Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)keadm ctl restart pod 的可选参数如下:[root@centos-2 bin]# keadm ctl restart pod -h Restart pods in edge node Usage: keadm ctl restart pod [flags] Flags: -h, --help help for pod -n, --namespace string Specify a namespace (default "default")Demo 演示:[root@centos-2 bin]# alias kectl='keadm ctl' [root@centos-2 bin]# kectl get pod -owide -A NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default nginx-deployment-58b54fbd94-f5q7p 1/1 Running 1 (20m ago) 22m 10.88.0.2 centos-2 kubeedge edge-eclipse-mosquitto-scvrk 1/1 Running 1 (16m ago) 28m 192.168.94.106 centos-2 [root@centos-2 bin]# kectl restart pod -n kubeedge edge-eclipse-mosquitto-scvrk 393cbcac4b484a4a28eee7dd2d63b33137a10a84d5f6eed6402b9a23efc6aef0 af4059137ced56b365da7e1c43d3ea218e3090ab7644a105651ca4661ddf26f0 [root@centos-2 bin]# kectl get pod -owide -A NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default nginx-deployment-58b54fbd94-f5q7p 1/1 Running 1 (21m ago) 23m 10.88.0.2 centos-2 kubeedge edge-eclipse-mosquitto-scvrk 1/1 Running 2 (10s ago) 29m 192.168.94.106 centos-2 更多信息可参考:cid:link_8cid:link_9▍易用性提升:基于 Keadm 的部署能力增强将命令 keadm generate 更改为 keadm manifest;[root@centos-2 bin]# keadm --help|grep manifest manifest Checks and generate the manifests. example: [root@centos-1 keepalived]# keadm manifest --advertise-address= --profile version=v1.17.0在 keadm join 添加一个镜像仓库参数: image-repository,以支持自定义镜像仓库;[root@centos-2 bin]# keadm join -h|grep image-repository --image-repository string Use this key to decide which image repository to pull images from example: [root@centos-2 bin]# keadm join --cloudcore-ipport :10000 --kubeedge-version=1.17.0 --remote-runtime-endpoint=unix:///run/cri-dockerd.sock --image-repository my.harbor.cn/kubeedge --token xxxx 将 keadm reset 命令进行三级拆分,拆分成 keadm reset cloud 和 keadm reset edge, keadm reset 仍然被保留,使用时 cloudcore 和 edgecore 都会被卸载,新增的三级命令 keadm reset cloud 和 keadm reset edge 分别只卸载 cloudcore 和 edgecore。[root@centos-2 bin]# keadm reset --help ... Available Commands: cloud Teardowns CloudCore component edge Teardowns EdgeCore component Flags: --force Reset the node without prompting for confirmation -h, --help help for reset --kube-config string Use this key to set kube-config path, eg: $HOME/.kube/config (default "/root/.kube/config") [root@centos-2 bin]# keadm reset cloud --help ... Flags: --force Reset the node without prompting for confirmation -h, --help help for cloud --kube-config string Use this key to set kube-config path, eg: $HOME/.kube/config (default "/root/.kube/config") [root@centos-2 bin]# keadm reset edge --help ... Flags: --force Reset the node without prompting for confirmation -h, --help help for edge更多信息可参考:cid:link_1cid:link_10cid:link_11cid:link_12▍Mapper 框架添加 MySQL 数据库在 1.17 的 Mapper-Framework 中,数据推送模块新增了 MySQL 数据库,如果用户想使用 MySQL 作为某个 property 的 PushMethod,可以在 device instance 的对应 property 下, 通过如下配置即可:apiVersion: devices.kubeedge.io/v1beta1 kind: Device ... spec: properties: - name: xxx ... pushMethod: dbMethod: mysql: mysqlClientConfig: addr: 127.0.0.1:3306 #the url to connect to the mysql database. database: kubeedge #database name userName: root #user name更多信息可参考:cid:link_13▍升级 K8s 依赖到 v1.28新版本将依赖的 Kubernetes 版本升级到 v1.28.6,您可以在云和边缘使用新版本的特性。更多信息可参考:cid:link_14 版本升级注意事项 自 v1.17.0 起,我们推荐在使用 keadm 安装 KubeEdge 时使用 --kubeedge-version= 来指定具体版本,--profile version= 会逐渐废弃。▍致谢感谢 KubeEdge 社区技术指导委员会 (TSC)、各 SIG 成员对 v1.17 版本开发的支持与贡献,未来 KubeEdge 将持续在新场景探索与支持、稳定性、安全性、可扩展性等方面持续发展与演进!▍相关链接Release Notes:cid:link_0 添加社区小助手k8s2222回复KubeEdge进入社区交流群
-
北京时间2024年5月21日,Volcano社区v1.9.0版本正式发布,此次版本增加了以下新特性:支持弹性队列容量capacity调度支持队列与节点间的亲和调度Volcano支持Kubernetes v1.29GPU共享支持节点打分调度增强scheduler metrics指标新增License合规性检查提升调度稳定性Volcano是业界首个云原生批量计算项目,于2019年6月在上海 KubeCon 正式开源,并在2020年4月成为 CNCF 官方项目。2022年4月,Volcano 正式晋级为CNCF 孵化项目。Volcano 社区开源以来,受到众多开发者、合作伙伴和用户的认可和支持。截至目前,累计有600+全球开发者参与社区贡献。支持弹性队列容量capacity调度Volcano现在使用proportion插件来进行队列管理,用户可以设置队列的guarantee、capability等字段来设置队列的预留资源和容量上限。并通过设置队列的weight值来实现集群内的资源共享,队列按照weight值按比例划分集群资源,但这种队列管理方式存在以下问题:队列划分的资源容量通过权重体现,不够直观。队列内的所有资源使用相同的比例进行划分,不能为队列的每一维资源单独设置容量。基于以上考虑,Volcano实现了新的队列弹性容量管理能力,它支持:用户可以直接为队列设置每一维度资源的容量,而不是设置weigh值来实现。基于deserved的队列弹性容量调度,支持队列的资源共享和回收。比如在AI大模型训练中分别为队列中不同的GPU型号如A100和V100,设置不同的资源容量。同时在集群资源空闲时,队列可以复用其他空闲队列的资源,并在需要时进行资源回收,直到回收到用户为队列设置的资源容量为止,即应得资源量deserved,从而实现弹性容量能力。使用改功能时需要设置队列的deserved字段,为每一维资源设置应得资源量。同时需要在调度配置中打开capacity插件,并关闭proportion插件。apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: demo-queue spec: reclaimable: true deserved: # set the deserved field. cpu: 64 memeory: 128Gi nvidia.com/a100: 40 nvidia.com/v100: 80队列弹性容量调度的完整使用例子,请参考:How to use capacity plugin[1]关于弹性队列容量设计文档,请参考Capacity scheduling Design[2]支持队列与节点间的亲和调度队列通常关联着公司内的部门,而不同部门通常需要使用不同的异构资源类型,比如大模型训练团队需要使用NIVDIA的Tesla GPU,而推荐团队需要使用AMD的GPU,当用户提交作业到队列时,需要根据队列的属性将作业自动调度到对应资源类型的节点上。为此Volcano实现了队列和节点的亲和调度能力,用户只需在队列的affinity字段设置需要亲和的节点标签,Volcano会自动将提交到当前队列的作业调度到队列关联的节点上,用户无需单独设置作业的亲和性,而只需统一设置队列的亲和性,提交到队列的作业都会根据队列与节点的亲和性将作业调度到对应的节点。该特性同时支持硬亲和、软亲和、反亲和调度,使用时需要为节点设置key为volcano.sh/nodegroup-name的标签,然后设置队列的affinity字段,指定硬亲和、软亲和和反亲和的标签值。例如如下的队列设置,表示提交到该队列的作业需要调度到标签值为groupname1和groupname2的节点,并优先调度到标签值为groupname2的节点,同时,作业不能调到到标签值为groupname3和groupname4的节点,当资源不足时则也可以调度到标签值为groupname3的节点上。apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: default spec: reclaimable: true weight: 1 affinity: # added field nodeGroupAffinity: requiredDuringSchedulingIgnoredDuringExecution: - <groupname1> - <groupname2> preferredDuringSchedulingIgnoredDuringExecution: - <groupname1> nodeGroupAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - <groupname3> - <gropuname4> preferredDuringSchedulingIgnoredDuringExecution: - <groupname3>该功能对应的调度插件名为nodegroup,完整使用例子请参考:How to use nodegroup plugin[3]详细设计文档请参考:The nodegroup design[4]GPU共享功能支持节点打分调度GPU共享是Volcano v1.8版本推出的GPU共享与隔离方案,提供GPU共享、设备显存控制能力,以提升AI训练推理场景下GPU资源利用率低的问题。v1.9在该功能基础上新增了对GPU节点打分的策略,从而可以在作业分配时选择最优的节点,进一步提升资源利用率,用户可以设置不同的打分策略。目前支持以下两种策略:Binpack:提供GPU卡粒度的binpack算法,优先把一个节点上的已经分配了资源的GPU卡占满,避免资源碎片和浪费。Spread:优先使用空闲的GPU卡而不是已经分配了资源的共享卡。详细使用文档请参考:How to use gpu sharing[5]Volcano支持Kubernetes v1.29Volcano版本紧跟Kubernetes社区版本节奏,对Kubernetes的每个大的基数版本都进行支持,目前最新支持的版本为v1.29,并运行了完整的UT、E2E用例,保证功能和可靠性。如果您想参与Volcano适配Kubernetes新版本的开发工作,请参考:https://github.com/volcano-sh/volcano/pull/3459 进行社区贡献。增强scheduler metrics指标Volcano使用了client-go客户端和Kubernetes交互,尽管客户端可以设置QPS来避免请求被限流,但是客户端实际使用的QPS到底达到了多少却很难观察到,为了实时观测到客户端请求的频率,Volcano新增了client-go客户端的metrics指标,用户可以通过访问metrics接口,查看GET、POST等请求在每秒钟的请求数量,从而确定每秒钟实际使用的QPS,以此决定是否需要调整客户端设置的QPS。同时client-go的相关指标还包括客户端证书轮转周期统计、每个请求的response size统计等。用户可以使用curl http://$volcano_scheduler_pod_ip:8080/metrics 来获取volcano scheduler的所有详细指标。详细PR见:[feat] Add rest client metrics by Monokaix · Pull Request #3274 · volcano-sh/volcano (github.com)[6]新增License合规性检查为了增强Volcano社区开源license合规治理规范,避免引入传染性开源协议,规避潜在风险,Volcano社区引入了开源license合规检查工具,所谓传染性协议指的是使用了该协议作为开源许可的软件在修改、使用、复制之后生成的衍生作品,也必须以该协议进行开源。开发者提交的PR会引入的三库如果包含了传染性开源协议比如GPL,LGPL等,CI门禁会进行拦截,开发者需要将三方库替换为松自由软件许可协议比如MIT、Apache 2.0,BSD等,以通过开源license合规检查。提升调度稳定性Volcano v1.9.0版本在抢占、调度失败重试、避免内存泄露、安全性增强等方面做了较多优化,具体内容包括:修复极端情况下deployment频繁扩缩容导致的pod无法调度的问题,详见PR:[cherry-pick for release-1.9]fix PodGroup being incorrectly deleted due to frequent creation and deletion of pods by guoqinwill · Pull Request #3376 · volcano-sh/volcano (github.com)[7]修复Pod抢占问题:详见PR:ignore PredicateFn err info for preempt & reclaim scheduler plugin by LivingCcj · Pull Request #3458 · volcano-sh/volcano (github.com)[8]优化Pod调度失败重试机制:详见PR:fix errTask channel memory leak by bibibox · Pull Request #3435 · volcano-sh/volcano (github.com)[9]metrics指标优化:详见PR:Fix queue metrics when there are no jobs in it by Monokaix · Pull Request #3463 · volcano-sh/volcano (github.com)[10]安全性增强:详见PR:Remove list secret in controller ClusterRole by lekaf974 · Pull Request #3449 · volcano-sh/volcano (github.com)[11]致谢贡献者Volcano 1.9.0 版本包含了来自多位社区贡献者的代码提交,在此对各位贡献者表示由衷的感谢:贡献者GitHub ID@daniel-hutao@wuyueandrew@googs1025@7sunarni @flyingfang@LivingCcj@guoqinwill@panoswoo@william-wang@lekaf974@yangqz@lowang-bh@loheagn@hwdef@archlitchi@Lily922@bibibox@Monokaix@belo4ya参考资料:[1] How to use capacity plugin: cid:link_1[2] Capacity scheduling Design: cid:link_3[3] How to use nodegroup plugin: cid:link_0[4] The nodegroup design: cid:link_4[5] How to use gpu sharing: cid:link_2[6] [feat] Add rest client metrics by Monokaix · Pull Request #3274 · volcano-sh/volcano (github.com): cid:link_8[7] [cherry-pick for release-1.9]fix PodGroup being incorrectly deleted due to frequent creation and deletion of pods by guoqinwill · Pull Request #3376 · volcano-sh/volcano (github.com): cid:link_9[8] ignore PredicateFn err info for preempt & reclaim scheduler plugin by LivingCcj · Pull Request #3458 · volcano-sh/volcano (github.com): cid:link_6[9] fix errTask channel memory leak by bibibox · Pull Request #3435 · volcano-sh/volcano (github.com): cid:link_7[10] Fix queue metrics when there are no jobs in it by Monokaix · Pull Request #3463 · volcano-sh/volcano (github.com): cid:link_10[11] Remove list secret in controller ClusterRole by lekaf974 · Pull Request #3449 · volcano-sh/volcano (github.com): cid:link_11
-
▍背景在k8s集群中,容器水平自动伸缩(HPA),可以根据容器资源的使用量,在设置好的副本范围内,自动扩缩容工作负载副本数(replicas)。HPA是基于指标阈值进行伸缩的,常见的指标有CPU和内存。也可以通过自定义指标,例如QPS、连接数等进行伸缩。但是存在一种场景:基于指标的伸缩存在一定的时延,这类时延主要包含:采集时延(分钟级) 、 判断时延(分钟级) 和伸缩时延(分钟级)。此类分钟级时延,无法适应在短期内极速上涨的业务流量,可能会导致应用CPU飚高,响应时间变长。容器定时水平自动伸缩(CronHPA)是对HPA的一种补充,对于有固定时间段高峰期的业务,可以提前将容器的实例数量扩容完毕,防止业务流量突发造成性能不足,导致业务延迟。而在业务低谷时,触发定时回收资源。在某些业务场景下,存在突发流量的同时,又具有明显的波峰波谷,若同时配置CronHPA和HPA两种策略,可能出现如下情况:在业务高峰到来前,CronHPA定时任务提前扩容业务容器副本,而此时HPA可能会检测到资源使用率很低而触发实例缩容,导致预扩容的策略失效。华为云CCE服务支持联动设置CronHPA策略和HPA策略,通过动态设置HPA的副本范围上下限,来调整业务容器实例数。▍使用示例日常生活中,许多业务场景在流量突发的同时具有明显的波峰波谷,且对响应时延很敏感,例如:1. 网络游戏:X游戏客户,旗下某大型网络游戏,在晚上或周末、节假日等高峰期间,玩家数量会急剧增加,导致游戏服务器的负载瞬间飙升,此时负载副本数若扩容较慢,可能导致网络卡顿,游戏体验显著下降;2. 视频直播:X视频直播APP,在某些大型活动、比赛等直播活动开始时,观众数量会迅速上升,导致服务器负载急剧增加,网络时延也会随之增加,进而导致观看直播的用户体验下降;3. 电商促销:X电商平台,在其促销活动时,通常会引起用户的热情高涨,导致用户访问量大幅增加,服务器负载也会急剧增加,若业务容器扩容不及时,很可能导致用户体验下降,严重的可能导致业务中断;4. 金融交易:X金融交易平台,旗下涉及多款金融产品,均需要实时响应,网络时延对交易效率和准确性有很大影响。在高峰期,交易量会急剧增加,网络时延也会随之增加。以上业务场景都需要高效、稳定的网络支持,对网络时延很敏感。如果业务容器扩容不及时,会导致网络时延过高,用户体验下降,甚至影响业务的正常运营。下面以视频直播服务为例,介绍如何进行弹性伸缩配置。假如每天晚上的8点半到10点有一场热门直播,在此期间,用户的访问量会暴增,随后流量缓慢下降直至到达低谷。为了节约成本,可按照如下配置,在流量高峰到来前,提前扩容业务容器实例数,在流量高峰退去后,根据业务流量,缓慢缩容:1. 在CCE控制台,单击集群名称进入集群。2. 单击左侧导航栏的“工作负载”,在目标工作负载的操作列中单击“更多 > 弹性伸缩”。3. 策略类型选择“HPA+CronHPA策略”,启用HPA策略,并同时启用CronHPA策略。此时CronHPA会定时调整HPA策略的最大和最小实例数。4. 设置HPA策略设置实例范围与系统策略,如下图, HPA会根据当前业务容器的CPU利用率,在1-10范围内动态调节容器的实例数,当CPU利用率大于80%时自动扩容,在CPU利用率低于60%时自动缩容业务容器实例数。5. 设置CronHPA策略设置定时任务,如下图所示策略一:20:00调整HPA策略实例数范围,从1-10变为8-10;策略二:22:30调整HPA策略实例数范围,从8-10变为1-10。6. 重复以上步骤,您可以添加多条策略规则,但策略的触发时间不能相同。7. 设置完成后,单击“创建”按照上述配置完成后,CronHPA会在流量高峰到来前的20:00调整HPA策略实例数范围,从1-10变为8-10,此时, HPA会将业务实例数至少扩容为8,为即将到来的流量高峰做准备。等到流量高峰过去后的22:30调整HPA策略实例数范围,从8-10变为1-10,此时,HPA会根据业务流量情况,缩容业务容器实例数到合适的值,降低用户使用成本。▍CronHPA与HPA联动解析 HPA是用来控制Pod水平伸缩的控制器,HPA周期性检查Pod的资源使用率数据,计算满足HPA资源所配置的目标数值所需的副本数,进而调整目标资源(如Deployment)的replicas字段。CronHPA支持定时调整HPA策略的最大和最小实例数,以此实现与HPA的联动,以满足复杂场景下的工作负载伸缩。由于HPA与CronHPA均作用于同一个deployment对象时存在冲突问题,两个伸缩策略相互独立,后执行的操作会覆盖先执行的操作,导致伸缩效果不符合预期,因此需避免这种情况发生。为避免上述问题,我们通过增强CronHPA,支持将CronHPA规则作用于HPA策略之上,CronHPA仅调整HPA的策略配置,而业务容器的实例数仅由HPA操作,从而实现两种弹性策略的协同工作。参数名中文名解释targetReplicasCronHPA的目标实例数表示CronHPA设定的业务容器实例数minReplicasHPA的最小实例数业务容器的实例数下限maxReplicasHPA的最大实例数业务容器的实例数上限replicas业务容器的预期实例数CronHPA策略生效之前业务容器的实例数▍总结k8s社区提供的HPA策略支持在配置的实例数范围内,根据业务容器的CPU、内存等资源使用率实现自动扩缩容。叠加定时扩容策略CronHPA,期望在业务高峰到来前,先通过CronHPA定时任务提前扩容业务容器副本数,然而此时可能会因HPA检测到资源使用率很低而触发实例缩容,导致预扩容的策略失效。华为云CCE服务通过将HPA与CronHPA组合,实现指标弹性策略与定时弹性策略的有机协同,满足了客户业务复杂的弹性伸缩场景。参考文档:https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/cid:link_0更多云原生技术动向关注容器魔方添加小助手k8s2222进入技术群
-
📮滴,学生卡!您已收到来自Volcano社区的开源之夏邀请~Volcano是业界首个云原生批量计算社区,也是 CNCF 首个及唯一孵化级批量计算项目。Volcano主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。社区已吸引5.8万+全球开发者,并获得3.8k+Star 和800+ Fork,参与贡献企业包括华为、AWS、百度、腾讯、博云、京东、小红书、第四范式、bilibili等。🏷️社区地址:https://github.com/volcano-sh/volcano 目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到广泛应用,完成对 Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene、Ray 等众多主流计算框架的支持,并构建起完善的上下游生态。Volcano社区已连续4年加入开源之夏,并在今年带来5项课题,欢迎高校同学选报,报名时间4月30日-6月4日。开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。▍Volcano社区开源之夏2024课题课题一:Volcano支持Pod Scheduling Readiness调度项目编号:243ba0503项目难度:基础/Basic项目社区导师:常旭征导师联系邮箱:cxz2536818783@gmail.com项目简述:Pod 一旦创建就被认为已准备好进行调度。在 kube-scheduler 中,它会尽职尽责地寻找节点来放置所有待处理的 Pod。然而,在现实情况下,某些 Pod 可能会长时间处于“缺少必要资源”状态。这些 Pod 实际上以不必要的方式干扰调度程序(以及 Cluster AutoScaler 等下游组件),造成资源浪费等问题。Pod Scheduling Readiness是 kube-sheduler 的一项稳定功能。它通过设置Pod的schedulingGates字段来控制Pod的调度时机。Volcano也应该支持该功能,以增强调度功能,避免无意义的调度,提升调度效率,进行调度准入等。参考:https://kubernetes.io/docs/concepts/scheduling-eviction/pod-scheduling-readiness/项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0503?list=org&navpage=org课题二:Volcano支持多集群AI任务调度中的队列容量管理能力项目编号:243ba0505项目难度:进阶/Advanced项目社区导师:王龙辉(lowang-bh)导师联系邮箱:lhui_wang@163.com项目简述:随着AI大模型的迅速发展,单个K8s集群由于资源和性能瓶颈,已越来越不能满足大模型AI作业训练的需求,越来越多的用户使用多集群来管理和运行AI作业,Volcano正在支持多集群AI作业的任务调度,这其中涉及到多集群的作业管理、多租户任务公平调度,队列管理等系列需求。多集群编排系统Karmada已逐渐成为业界标准,Volcano需要基于Karmada现有的能力,构建多集群场景下的AI作业调度能力,弥补Karmada调度方面缺失的队列管理等能力,以解决多集群场景下AI作业任务调度、队列管理、多租户配额管理问题。项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0505?list=org&navpage=org课题三:Volcano支持弹性层级队列管理项目编号:243ba0509项目难度:进阶/Advanced项目社区导师:李鑫导师联系邮箱:hwdefcom@outlook.com项目简述:在云原生AI任务调度场景下,公平调度和资源利用率是用户比较关注的问题,Volcano社区已经构建了弹性队列管理插件capacity,以支持细粒度的资源借入借出和队列管理,提升资源利用率,但在实际场景中,队列通常是层级的,对应公司团队的层级组织架构,为了更加符合实际的队列使用场景,进一步提升AI任务调度的资源利用率,Volcano需要在capacity的基础上支持层级队列管理能力。项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0509?list=org&navpage=org课题四:云原生批量计算项目Volcano UI & Monitor系统项目编号:243ba0574项目难度:基础/Basic项目社区导师:王雷博导师联系邮箱:wangleibo1@huawei.com项目简述:作为首个云原生批量计算项目Volcano,提供了丰富的功能和优异的性能,帮助用户提升AI和大数据的性能以及提升整体资源利用率,然而对于很多用户来说,Volcano因为缺少前端UI以及监控,整体的使用成本以及学习曲线较高,尤其是对于集群管理员,无法通过UI对队列、作业进行管理以及无法直观的查看资源的总量、余量以及作业的进度等。该项目将设计和实现一套Volcano项目的前端UI,该UI具体包含如下内容:1. 集群资源信息查看2. 队列管理2.1 查看队列 ( reservation, min, max, allocated resource, job数量等)2.2 配置队列(reservation,min, max)3. 工作负载3.1 查看Job状态3.2 配置Job的关键属性4. 配置调度器的调度策略项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0574?list=org&navpage=org课题五:Volcano 性能基准测试和压力测试项目难度:243ba0576项目难度:进阶/Advanced项目社区导师:汪洋导师联系邮箱:wysea1990@163.com项目简述:Volcano开源项目提供了丰富的作业管理、队列管理、调度策略等功能,目前缺少一套公开的性能测试和压力基准测试。如果有一份性能基准测试报告,它将会帮助大数据用户以及HPC用户快速评估是否可以将他们的业务从传统软件迁移到Kubernetes和Volcano系统。同时也有利于新研发算法的有效性评估。本课题目标是设计和实现一套性能测试的方法以及标准,然后进行充分的性能及压力测试,最终提供一份报告。项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0576?list=org&navpage=org▍如何报名开源之夏Volcano课题?报名对象本活动面向年满 18 周岁的高校在校学生。暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。4月30日-6月4日,符合条件的学生可以通过开源之夏官网(https://summer-ospp.ac.cn/)注册、与导师沟通项目并提交项目申请。▶ 与导师建立沟通对Volcano社区开源之夏课题感兴趣的同学,可以通过本文上方导师邮箱或社区宣讲等方式,提前联系导师沟通课题要求,了解与锁定适合自己的项目;▶ 准备项目申请材料提交申请1. 查看学生指南(https://summer-ospp.ac.cn/help/student/)中的【项目申请模板】,并根据要求准备相关材料。2.点击项目主页中的【加入备选】按钮,进入系统个人中心【我的项目】中点击【查看】按钮,上传简历及项目申请书;3. 对所有项目申请书进行优先级排序,若同时被多个项目选中,则根据提交的项目排序,优先中选优先级高的项目;4. 点击【排序并提交】按钮提交全部项目申请。▶ 学生可以收获什么?结识开源界小伙伴和技术大牛获得社区导师的专业指导,与开源项目开发者深度交流丰富项目实践经验,提升项目开发技能为学习方向提供参考,为职业发展积累人脉通过结项考核的学生将获得结项奖金和结项证书(基础难度税前8000元RMB,进阶难度税前12000元RMB),更有机会获选优秀学生▍Volcano社区技术交流与联系添加社区小助手k8s2222回复Volcano开源之夏进入技术交流群
-
开源之夏介绍开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。开源之夏2024学生报名正在火热开展(4月30日-6月4日),Kmesh内核级云原生流量治理引擎共带来8项课题,欢迎高校同学选报。▍Kmesh社区介绍Kmesh(https://github.com/kmesh-net/kmesh)是集高性能、低开销及安全可靠于一身的内核级云原生流量治理框架,通过将 L4、L7流量治理能力卸载到内核,使得服务转发性能分别提升 50%、60%,底噪开销降低 70%;基于可编程内核 + eBPF实现的高性能流量治理引擎,Kmesh可实现服务网格场景下服务间多跳变一跳的服务访问,相比业界方案性能提升3~5倍。Kmesh 从OS视角,提出了基于可编程内核的服务治理,通过将流量治理能力下沉 OS,大幅提升网格数据面性能,为网格数据面的发展提供了一种全新思路。在早期版本开发过程中,Kmesh得到了openEuler社区的孵化与支持,后续作为独立发展的开源项目,将持续与openEuler紧密协作,为用户提供极致性能的流量治理技术方案。▍Kmesh社区开源之夏2024课题课题1 Kmesh数据面治理可扩展性项目编号:24f1e0358项目难度:进阶项目社区导师:吴长冶(sky)导师联系邮箱:wuchangye@huawei.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎,当前支持xds/workload治理模型;但在实际应用场景下,不同应用可能存在自定义治理规则的诉求,当前Kmesh缺乏较好的治理扩展机制,期望提供黑盒易用、解耦的可扩展机制,方便自定义治理规则的扩展诉求。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0358?list=org&navpage=org课题2 kmesh e2e测试项目编号:24f1e0360项目难度:进阶项目社区导师:姚增增导师联系邮箱:yaozengzeng@huawei.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎。e2e测试能够模拟真实场景下软件系统的完整性和准确性,验证整个系统能否按照预期工作以及不同组件是否能够协同工作。当前期望在Kmesh中引入e2e测试,加入黑盒测试维度,进一步提高项目质量。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0360?list=org&navpage=org课题3 一致性hash负载均衡项目编号:24f1e0362项目难度:进阶项目社区导师:谢颂杨(xsy)导师联系邮箱:xiesongyang@huawei.com项目简述:一致性hash负载均衡一致性hash负载均衡Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎;当前支持随机和轮询的负载均衡算法,为了确保请求能够高效且均匀地分发到各个服务实例上,需要基于eBPF进一步扩展一致性hash负载均衡算法。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0362?list=org&navpage=org课题4 Kmesh支持拓扑感知{地域}负载均衡项目编号:24f1e0363项目难度:进阶项目社区导师:孔维斌导师联系邮箱:kongweibin2@huawei.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎;当前支持随机和轮询的负载均衡算法,为了确保请求能够高效且均匀地分发到各个服务实例上,需要基于eBPF进一步扩展拓扑感知{地域}负载均衡算法。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0363?list=org&navpage=org课题5 Kmesh支持限流项目编号:24f1e0365项目难度:进阶项目社区导师:田慕阳(talon)导师联系邮箱:tianmuyang@huawei.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎。在传统的Spring Cloud微服务和较新的Service Mesh微服务架构中,限流机制保证了微服务在突增流量场景下的可用性。当前行业趋势是微服务流量编排正基于eBPF逐渐下沉到内核,期望在Kmesh中引入限流能力。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0365?list=org&navpage=org课题6 Kmesh支持熔断项目编号:24f1e0366项目难度:进阶项目社区导师:张明轶(lec-bit)导师联系邮箱:zhangmingyi5@huawei.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎,当前支持xds/workload治理模型。在当前Kmesh中,对于eBPF程序,缺少UT测试等框架,需要引入UT测试框架保障整体代码质量Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎。熔断机制通常用于防止服务之间的故障扩散,保护系统的稳定性,避免大量请求导致系统崩溃或雪崩效应。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0366?list=org&navpage=org课题7 Kmesh性能可视化项目编号:224f1e0367项目难度:进阶项目社区导师:李蔚(weli)导师联系邮箱:1289113577@qq.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎,可实现服务网格场景下服务间多跳变一跳的服务访问,相比业界方案性能提升3~5倍;随着社区特性的不断丰富,如何保障Kmesh性能是当下面临的重要挑战;当前Kmesh的主体功能包括与网格控制面对接(GO代码)、数据面治理转发(eBPF/ko代码),新特性修改容易引入性能劣化问题,同时对于多语言、跨用户态/内核态流程难以做性能基线防护;本课题期望实现一种Kmesh性能看护工具,实现Kmesh规则刷新、数据治理转发等场景的性能可视化观测,保障Kmesh关键性能指标看护。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0367?list=org&navpage=org课题8 Kmesh eBPF UT测试框架项目编号:24f1e0368项目难度:进阶项目社区导师:刘忻(L.X.)导师联系邮箱:liuxin350@huawei.com项目简述:Kmesh是基于可编程内核 + eBPF实现的高性能流量治理引擎,可实现服务网格场景下服务间多跳变一跳的服务访问,相比业界方案性能提升3~5倍;随着社区特性的不断丰富,数据面的eBPF程序越来越多,由于eBPF本身的限制(第三态编码,非用户态也非内核态,运行在内核虚拟机中,有专用的指令集),在Kmesh中通过tail-call、map-in-map等特性实现了较复杂的治理逻辑,这也为数据面质量防护提出了挑战;eBPF作为近年内核新提出的可编程技术,当前生态并不成熟,业界在eBPF测试能力也在做积极的探索(如 Unit Testing eBPF);本课题期望结合Kmesh项目,开发一个eBPF UT测试框架,保障Kmesh数据面质量。项目链接:https://summer-ospp.ac.cn/org/prodetail/24f1e0368?list=org&navpage=org▍如何报名开源之夏Kmesh课题?报名对象本活动面向年满 18 周岁的高校在校学生。暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。4月30日-6月4日,符合条件的学生可以通过开源之夏官网(https://summer-ospp.ac.cn/)注册、与导师沟通项目并提交项目申请。与导师建立沟通对Kmesh社区开源之夏课题感兴趣的同学,请提前通过本文上方导师邮箱或社区宣讲等方式,联系导师沟通课题要求,了解与锁定适合自己的项目;准备项目申请材料提交申请1. 查看学生指南(https://summer-ospp.ac.cn/help/student/)中的【项目申请模板】,并根据要求准备相关材料。2.点击项目主页中的【加入备选】按钮,进入系统个人中心【我的项目】中点击【查看】按钮,上传简历及项目申请书;3. 对所有项目申请书进行优先级排序,若同时被多个项目选中,则根据提交的项目排序,优先中选优先级高的项目;4. 点击【排序并提交】按钮提交全部项目申请。学生可以收获什么?结识开源界小伙伴和技术大牛获得社区导师的专业指导,与开源项目开发者深度交流丰富项目实践经验,提升项目开发技能为学习方向提供参考,为职业发展积累人脉通过结项考核的学生将获得结项奖金和结项证书(基础难度税前8000元RMB,进阶难度税前12000元RMB),更有机会获选优秀学生▍Kmesh社区开源之夏课题宣讲会为帮助同学们更好地了解与选定课题,Kmesh社区将于5月16日(周四)下午16:00开展课题宣讲,欢迎同学们关注参与!学生参会链接:https://meeting.huaweicloud.com/welink/#/j/99359226/UIO1rsuCRnKWkeJJAjFfwuIMPKlktW4p1添加社区小助手k8s2222回复Kmesh开源之夏进入社区交流群
-
▍企业上云现状:上云趋势持续加深,但云上开支存在显著浪费根据Flexer 2024年最新的一项调查显示,当前有超过70%的企业重度使用云服务,而这个数据去年是65%。由此可见,越来越多的企业开始把业务部署在云上。企业在使用云厂商提供的云服务的同时,也在为云服务的花费买单。调查显示,平均大约有30%的云成本支出被认为是无效支出。如何节省云成本支出成为近几年上云企业最关心的Top1问题。▍企业云原生化逐步深入,成本治理依然存在挑战云原生技术当前已经成为很多企业进行数字化转型的主流方式。kubernetes提供的资源共享、资源隔离、弹性调度等能力,本身能够帮助企业提升资源使用率,降低企业IT成本。然而,2021年CNCF《FinOps Kubernetes Report》的调研报告显示,迁移至Kubernetes平台后,68%的受访者表示所在企业计算资源成本有所增加,36%的受访者表示成本飙升超过20%。其背后的原因值得深思。▍云原生时代成本治理面对的挑战云原生时代成本治理有四个矛盾点:业务单元 VS 计费单元:一般云服务(比如ECS)的计费周期比较长,可能是包月或者包年;而云原生容器的生命周期相对比较短暂,容器的弹性伸缩、故障重启等动作,都有可能导致资源的闲置率比较高。容量规划 VS 资源供给:容量规划一般是静态的,一般是按照预算或者规划提前准备容器,而资源供给是业务来驱动。业务的高峰流量冲击,升级扩容等场景,都会对容量规划造成很大的挑战。统一治理 VS 多云部署:现在很多企业使用了不止一朵云,不同的云厂商的账单接口和格式都不一样,不利于企业的多云统一成本治理。成本模型 VS 云原生架构:云厂商的成本模型相对比较简单,一般是按照物理资源来计费,比如ECS服务是以整机的价格来计费。云原生架构以应用为中心,资源的申请细化到CPU/内存等粒度。这就导致云原生场景成本可视化和成本分析比较困难。总结下来,云原生成本治理面临三大挑战:成本洞察:云原生场景如何实现成本可视化,如何快速定位成本问题、识别资源浪费?成本优化:云原生成本优化的手段很多,如何采用合适的成本优化手段来实现收益最大化?成本运营:企业如何构建可持续的成本治理体系与文化?▍华为云云原生FinOps解决方案FinOps 是一门将财务管理原则与云工程和运营相结合的学科,它使组织更好地了解其云支出。 它还能够帮助他们就如何分配和管理云成本做出明智的决策。 FinOps 的目标不是节省资金,而是通过云实现最大化的收入或业务价值。 它有助于组织控制云支出,同时保持支持其业务运营所需的性能、可靠性和安全性级别。FinOps Foundation 将 FinOps 定义为三个阶段:通知、优化和运营。根据每个团队或企业完成 FinOps 的进度,公司可能会同时处于多个阶段。通知(成本洞察):通知是 FinOps 框架的第一阶段。这一阶段旨在为所有利益相关者提供所需的信息,以便于他们了解情况,从而做出有关云使用的经济高效的明智决策。成本优化:成本优化重点是想方设法节约成本。根据当前使用情况,您的组织可以在哪些方面合理调整资源规模,并从折扣中受益?成本运营:成本运营是 FinOps 框架的最后一个阶段。在这一阶段,组织会根据业务目标持续评估绩效,然后想方设法改进 FinOps 实践。优化工作到位后,组织可以借助自动化来实施策略,在不影响性能的情况下不断调整云资源来控制成本。华为云云原生FinOps解决方案,参照业界FinOps标准与最佳实践,为用户提供云原生成本多维可视化与多种成本优化治理手段,协助客户最大化的收入或业务价值。▍云原生FinOps - 成本洞察华为云云原生FinOps成本洞察,提供如下关键特性:基于标签的资源成本归属支持ECS、EVS等资源关联集群标签,便于集群费用汇总计算基于CBC账单的精准成本计算基于CBC真实账单进行成本分摊计算,精准划分部门成本灵活的成本分摊策略支持集群、命名空间、节点池、应用、自定义等多种维度的成本可视化与成本分摊策略。支持长期的成本数据存储与检索最大支持长达2年的成本分析,支持月度,季度,年度报表及导出。工作负载快速感知,轻松应对快速弹性场景针对应用快速弹性场景,支持分钟级的负载发现与计费能力,让所有成本无一遗漏。云原生成本洞察的实现机制介绍:1、集群物理资源成本 VS 集群逻辑资源成本集群的成本可以从两个角度来计算:集群物理资源成本,包括集群直接或间接关联的资源成本,比如集群管理费、ECS成本、EVS成本等。集群的物理资源成本可以从云成本账单中直观的体现出来。集群逻辑资源成本,从kubernetes资源的角度,集群的成本包括工作负载的成本,再加上集群闲置资源成本和公共开销成本。不难看出,集群物理资源成本=集群逻辑资源成本。2、单位资源(CPU/内存等)成本计算在集群的物理资源成本已知的情况下,如何推导出集群逻辑资源成本(如pod/工作负载),是云原生FinOps成本洞察的关键。这里核心要解决的问题是单位资源成本计算的问题。我们知道,一般的云虚拟机是按照整机的价格去售卖的,不会按照单位CPU或内存售卖。但是容器服务的资源占用是按照单位资源(CPU或内存等)来申请的。所以必须计算出单位资源的成本,才能最终计算出容器服务占用的成本。一般云厂商单位CPU或内存的价格会有一个估算值,我们也可以按照CPU和内存的成本占比来计算单位资源成本。3、云原生资源成本计算从下图我们可以看出,一个Pod的资源使用是随着时间动态波动。有些时刻Pod的资源占用低于资源申请(Request),有些时刻Pod的资源占用大于资源申请(Request)。在计算Pod成本时,我们会定时采样Pod的实际使用值和Request值,并将实际使用值和Request值中的最大值用于Pod的成本计算。这是因为一旦Request值分配给Pod,那么这不是资源会被K8S预留,不会被其他Pod抢占。所有Pod需要为Request部门的资源买单。同理,如果Pod的实际使用量大于Request,那么这个Pod也需要为超出的部分买单。基于以上原理,我们就可以得出Pod的成本计算:将命名空间下所有的Pod成本累加,就可以得出命名空间维度的成本:基于以上计算逻辑,华为云CCE云原生成本治理特性实现了多种维度的集群成本可视化,比如:集群成本可视化命名空间成本可视化节点池成本可视化工作负载成本可视化4、部门成本分摊与成本分析报表很多企业会把一个集群安装命名空间的粒度分配给不同的部门使用。那么如何对各个部门的成本进行可视化分析?从上图可以看出,部门的成本不仅包括部门归属的命名空间的成本,还应该承担一部分公共成本。这部分功能成本包括系统命名空间成本和空闲资源成本。华为云CCE云原生成本治理支持基于部门的成本分摊策略配置,如下图所示:同时,基于部门的成本分摊策略,华为云CCE云原生成本治理提供了月度/季度/年度报表功能,最大支持2年的报表查询与导出。▍云原生FinOps - 成本优化云原生场景如何提升资源利用率?据 Gartner 统计,企业CPU平均使用率不足15%,造成资源利用率低的原因有多种,典型场景有:• 资源配置不合理:部分用户对于自己服务的资源使用情况不了解,申请资源时具有盲目性,通常申请过量资源• 业务波峰波谷:微服务具有明显日级别波峰、波谷特性,用户为保证服务的性能和稳定性按照波峰申请资源• 资源碎片化:不同业务部门资源池独立,无法做到资源共享,容易产生资源碎片。容器化能一定程度上提升资源利用率,但是存在部分问题单纯依赖容器化无法得到有效解决:• 资源过量申请:如果没有有效的资源推荐和监控机制,普遍实践还是是超额申请、积沙成塔造成资源浪费。• 资源池统一:K8s原生调度器缺少组、队列等高阶调度能力;大数据业务存算一体难以利用容器弹性优势。• 应用性能:单纯增加部署密度难以保证服务质量。为了提升集群资源利用率,CCE云原生FinOps解决方案提供了多种优化手段,比如智能应用资源规格推荐、云原生混部、动态超卖等能力。1. 智能应用资源规格推荐为了保障应用性能和可靠性,同时由于缺乏足够的可视化工具,我们总是倾向为应用申请过量的资源。为了解决这一问题,CCE云原生成本治理提供了智能应用资源规格推荐功能。该功能基于应用的历史画像数据,基于机器学习算法,为应用推荐最佳的申请值。2. 华为云云原生混部解决方案华为云CCE云原生混部解决方案基于volcano插件,支持一键部署,为容器业务提供高低优先级混合部署,动态超卖,服务QoS保障等能力。关键能力主要包括:容器业务优先级与资源隔离融合调度应用SLO感知:多类型业务智能混合调度,应用拓扑感知,分时复用,超卖等;资源感知调度:提供CPU NUMA拓扑感知、IO感知、网络感知调度,软硬协同,提升应用性能;集群资源规划:提供队列、公平、优先级、预留、抢占等丰富策略,统一满足高优、低优业务;节点QoS管理:多维度资源隔离、干扰检查、驱逐机制。下面重点介绍动态超卖特性:如何将节点闲置资源再利用,提升资源利用率。动态超卖的核心原理为:将节点Request和实际使用量的差值部分,作为可调度资源,供调度器重新分配,仅供低优任务使用。超卖特性有如下特点:低于作业优先使用超卖资源高优作业预选超卖节点时只能使用其非超卖资源统一调度周期高优作业先于低优作业调度不管是云原生混部还是超卖特性,都可以提升资源利用率。那么如何在提升资源利用率的同时,保障应用性能与服务质量?华为HCE 2.0 OS提供的CPU隔离能力,结合CPU快速抢占、SMT管理控制和离线任务压制指令的负载均衡能力,保障在线业务资源QoS同时,也能让被压制的离线任务指令尽量快速得到响应。根据实验室中模拟在线和离线混部场景(CPU利用率70+%)与单独业务部署在线的场景(CPU利用率30%)进行性能对比,混部场景中在线业务的性能(时延&吞吐)劣化幅度控制在单独部署在线业务性能的5%之内。基本可以认为把混部对性能的影响降低到可以忽略不计。下面我们来看一个客户案例,该客户利用华为云云原生混部解决方案,优化资源配置,最终实现35%的资源利用率提升。该客户的主要痛点包括:应用干扰:大数据与在线语音、推荐等应用争抢资源,e.g. cpu/memory,网络;影响高优任务服务质量。应用资源配置不合理:为了保证调度成功,request设置很小,不能反馈负载资源需求,引发资源冲突应用绑核:部分应用绑核,总体资源利用率低基于客户痛点,我们为客户提供如下解决方案:客户将原来节点OS由CentOS切换至华为云HCE OS;将调度器由原来基于默认调度器切换至Volcano调度器;根据客户业务属性,配置调度优先级、隔离等等策略;通过华为云云原生混部解决方案,最终为客户带来资源利用率提升35%的收益。3. CCE Autopilot:按需付费与灵活规格助力客户节约成本CCE全新推出的Autopilot集群,支持按照应用的实际用量按需付费,相对于CCE集群的优势是Autopilot集群将节点的管理运维完全托管起来,这样您无需提前规划和购买节点资源,从而实现精细化的成本治理。这里我们看两个客户场景:互联网文娱和社交业务,春节假期期间流量是平时的数倍,专项跟踪运维保障,提前预留资源,成本巨大。网约车平台,业务具有典型的早晚高峰特点,传统驾驶模式需要客户手动购买和提前预留资源,资源利用率低。通过Autopilot可以实现成本精细化治理,最终实现整体成本降低与收益最大化。扫码体验华为云CCE获取华为云云原生FinOps方案▼▼▼
-
开源之夏介绍开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。Kuasar多沙箱容器运行时项目开源之夏2024课题已上线!这个夏天,期待与同学们一起开启多沙箱容器运行时技术之旅。▍Kuasar社区介绍CNCF Kuasar 多沙箱容器运行时项目(https://github.com/kuasar-io/kuasar)于2023年4月在KubeCon + CloudNativeCon Europe上由华为云、中国农业银行以及openEuler社区、WasmEdge社区和Quark Containers社区联合发起,并于2023年12月成为云原生计算基金会(CNCF)官方项目。Kuasar融入了各企业和社区在容器运行时领域的前沿探索、技术积累和生产实践,开源至今受到业界的广泛关注和支持,数十位来自外部企业、高校的开源爱好者参与开发贡献和积极落地应用,Kuasar正以开源创新的姿态促进云原生产业发展。▍Kuasar社区开源之夏2024课题已上线课题一 vmm类型Pod支持使用youki库创建容器项目编号:240110284项目难度:进阶/Advanced项目社区导师:abel-von(华为云)导师联系邮箱:fshb1988@gmail.com项目简述:Kuasar可以创建轻量级虚拟机(vmm)类型的Pod,并在虚拟机内创建容器示例。当前做法是虚机内的vmm-task进程调用runc命令行进行创建,存在一定的性能开销。Youki(containers/youki: A container runtime written in Rust (github.com))是一个使用rust语言编写的容器运行时,同样遵循OCI规范。本课题希望可以实现在vmm-task进程里调用youki库(注意,是库不是命令行)的接口进行容器生命周期管理。项目链接:https://summer-ospp.ac.cn/org/prodetail/240110284?lang=zh&list=pro课题二 使用tracing库增强组件可观测性项目编号:240110286项目难度:基础/Basic项目社区导师:burning(华为云)导师联系邮箱:burning9699@gmail.com项目简述:追踪(tracing)技术通常被用于业务逻辑执行情况的分析和问题定位,方便开发测试人员了解框架、找出瓶颈、分析问题,Rust也有类似的库:tokio-rs/tracing: Application level tracing for Rust. (github.com) 。本课题期望通过引入该库,实现对vmm-sandboxer和vmm-task请求调用情况的可视化,提高系统可观测性。项目链接:https://summer-ospp.ac.cn/org/prodetail/240110286?lang=zh&list=pro▍开源之夏面向哪些学生?本活动面向年满 18 周岁的高校在校学生。暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。▍我可以在开源之夏获得什么?结识开源界小伙伴和技术大牛获得社区导师的专业指导,与开源项目开发者深度交流丰富项目实践经验,提升项目开发技能为学习方向提供参考,为职业发展积累人脉通过结项考核的学生将获得结项奖金和结项证书(基础难度税前8000元RMB,进阶难度税前12000元RMB),更有机会获选优秀学生▍学生参与关键时间点4月30日-6月4日期间,学生可以通过开源之夏官网(https://summer-ospp.ac.cn/)注册、与导师沟通项目并提交项目申请。对Kuasar社区开源之夏课题感兴趣的同学,可以通过本文上方导师邮箱,提前联系导师沟通课题需求,找到最适合自己的课题方向,您也可以添加社区小助手微信k8s2222,回复Kuasar进入社区技术交流群或了解社区课题。添加社区小助手微信k8s2222回复Kuasar了解课题申报或进入社区技术交流群学生在开源之夏课题参与期间,通过线上工作的形式完成课题,相关项目结项需要在9月30日前以 PR 的形式提交到Kuasar社区仓库中并完成合并,结项的同学根据项目难度获得结项成果及奖金,并有机会获选主办方优秀学生。▍进一步了解Kuasar作为多沙箱容器运行时项目,Kuasar在保留传统容器运行时功能的基础上,与Containerd社区一起推动新的沙箱接口统一标准,并通过全面Rust化以及优化管理模型框架等手段,进一步降低管理开销,简化调用链路,灵活扩展对业界主流沙箱技术的支持。此外,通过支持多安全沙箱共节点部署,Kuasar可以充分利用节点资源、降本增效,为用户提供更安全高效的沙箱场景解决方案。Kuasar项目全景图南向沙箱方面,Kuasar已支持基于轻量级虚拟化技术的安全容器沙箱(Cloud Hypervisor、Qemu、StratoVirt),基于新兴的WebAssembly沙箱(WasmEdge、Wasmtime),基于进程级虚拟化的App Kernel沙箱(Quark)以及基于内核的原生普通容器沙箱(runC);北向引擎方面,Kuasar已与Containerd联合构建最新的沙箱接口标准,并共同推动该标准在Containerd v2.0版本的完整实现。此外,轻量级容器引擎iSulad项目也已经完成与Kuasar项目的深度集成,支持在openEuler 23.09创新版本上一键部署。CNCF Kuasar社区期待与同学们一起开启开源之夏2024,这个夏天,来自华为云的大咖导师将与您携手作战,一起推动云原生领域容器运行时技术的探索、创新和发展。
-
还在对集群成本评估感到束手无策?还在担心不合理的K8s集群资源浪费?华为云云原生全新上线云原生FinOps成本治理中心,为用户提供多维度集群成本可视化,结合智能规格推荐、混部、超卖等成本优化手段,助力客户降本增效。 4月24日(周三)16:30-18:00,华为云云原生DTSE技术布道师 Roc老师将带来《华为云云原生FinOps解决方案,为您释放云原生最大价值》直播分享。华为云云原生FinOps解决方案通过可视化的成本洞察和成本优化,帮助用户精细用云以提升单位成本的资源利用率,实现降本增效目标,本期直播通过云原生上云现状分析及华为云FinOps方案及实践解析,系统化解析华为云云原生一系列云原生FinOps技术 ,为企业与用户提供企业上云成本管理的最优路径。▍直播精彩看点企业上云现状与云原生FinOps优势华为云云原生FinOps解决方案云原生FinOps成本展示与成本分析云原生FinOps成本优化华为云CCE云原生成本治理功能演示▍直播观看平台华为云官网 华为云开发者联盟视频号、CSDN、B站、虎牙、微博华为云视频号、快手、B站、虎牙、微博▍看直播 赢定制礼品 福利1 | 专家坐堂有奖: 即日起-4月25日,在指定论坛贴提问,评选优质问题送华为云定制POLO衫。 福利2 | 互动有礼: 官网直播间发口令“华为云 DTSE”抽华为云定制雨伞。福利3 | 有奖提问:直播过程中提问,评选优质问题送华为云定制长袖卫衣。扫码体验华为云CCE获取华为云云原生FinOps方案▼▼▼
-
3月21日,在巴黎举办的云原生顶级峰会KubeCon+CloudNativeCon Europe 2024上 ,华为云首席架构师顾炯炯在 “Cloud Native x AI:以持续开源创新开启智能时代” 的主题演讲中指出,云原生和AI技术的融合,是推动产业深刻变革的关键所在。华为云将持续进行开源创新,与开发者共启智能时代。 ▲华为云首席架构师顾炯炯发表演讲AI对于云原生范式提出关键挑战在过去的几年里,云原生彻底改变了传统的IT系统,催化了互联网和政府服务等领域的数字飞跃。云原生范式带来的新的可能性,例如闪电般的快速销售和基于微服务治理的敏捷应用DevOps,已经深入人心。同时,人工智能的快速发展和广泛采用,包括大规模模型,已经成为行业智能的跳动心脏。根据Epoch 2023年的调研数据,基础模型所需的计算能力每18个月就会增长10倍,是摩尔定理揭示的通用计算能力增长率的5倍。AI带来的新摩尔定律和大规模AI模型的主导地位对云原生范式提出了挑战,顾炯炯总结了其中关键的4点:首先,低GPU/NPU平均利用率导致AI训练和推理的高成本;其次,大模型训练集群频繁的失败率限制了训练效率;第三,大规模模型的复杂配置导致AI开发门槛高;第四,大规模的AI推理部署面临着不可预测的最终用户访问延迟和数据隐私问题的风险。华为云AI创新为开发者迎接挑战提供思路随着AI模型变得越来越大,对计算能力的需求也呈指数级增长。这种需求不仅给云原生技术带来了挑战,也为业界提供了创新机遇。顾炯炯分享了一些华为云在AI创新方面的故事,为开发者解决这些挑战提供了参考。在云原生边缘计算平台KubeEdge的基础上,华为云实现了一个云原生多机器人调度管理平台。用户可以通过自然语言命令在云端输入任务指令,由系统协调边缘的多个机器人共同协作完成复杂任务。为了克服自然语言命令理解、大量机器人高效调度管理以及跨类型机器人访问管理的三个挑战,该系统采用了云端、边缘节点和机器人三个部分的架构,通过大模型执行自然语言命令,并进行流量预测、任务分配和路由规划。这一架构显著提高了机器人平台的灵活性,管理效率提升25%,系统部署周期缩短30%,新机器人的部署时间从月级缩短到天级。中国某顶级内容分享社区,每月活跃用户超过1亿。它的核心服务之一是主页上的推荐功能。推荐模型有近1000亿个参数。训练集群有数千个计算节点。一个训练作业需要数百个参数服务器和worker。因此,该社区对最优拓扑调度、高性能、高吞吐量有着强烈的需求。开源项目Volcano可以更好地支持在Kubernetes上运行的AI/ML工作负载,并提供了一系列作业管理和高级调度策略。Volcano项目引入了拓扑感知调度、装箱、SLA感知调度等算法,帮助社区将整体训练性能提升了20%,运维复杂度也大大降低。Serverless AI引领云原生发展趋势如何高效、稳定地运行AI应用,同时降低运营成本,成为摆在众多企业和开发者面前的一大挑战。为此,华为云总结了云原生AI平台的关键要求,提出了一种全新的云原生AI平台理念——Serverless AI。顾炯炯提到,从开发者的视角来看,Serverless AI致力于智能地推荐并行策略,让复杂的训练和推理任务变得轻而易举。它提供自适应的GPU/NPU自动扩展功能,能够根据工作负载的实时变化动态调整资源分配,确保任务的高效执行。同时,Serverless AI还维护着一个无故障的GPU/NPU集群,让开发者无需担心硬件故障带来的中断风险。更值得一提的是,该平台保持与主流AI框架的兼容性,让开发者能够无缝集成现有的AI工具和模型。对于云服务提供商而言,Serverless AI同样具有深远的意义。它不仅能够提高GPU/NPU的利用率,使训练、推理和开发混合工作负载得以高效运行,还能通过优化能效实现绿色计算,降低能耗成本。此外,Serverless AI平台还能实现跨多个租户的空间和时间GPU/NPU共享,提高资源的复用率。最重要的是,它为训练和推理任务提供了有保证的QoS和SLA,确保了服务质量和稳定性。Serverless AI平台采用了构建在操作系统和虚拟化之上的灵活的资源调度层,将应用程序框架的关键功能封装于应用资源中介层中。顾炯炯现场展示了Serverless AI平台的参考架构。他认为,这种架构设计,使得Serverless AI平台具有了大规模AI资源自动驱动引擎的特点,包括精确了解应用资源利用模式的资源分析,实现异构硬件资源池化的资源共享,基于GPU/NPU虚拟化和负载热迁移的AI训练任务容错能力,以及提高资源利用率的多维度调度和自适应弹性伸缩等优点。分论坛上,华为云技术专家提到,Kubernetes上运行AI/ML工作负载的使用量不断增加,许多公司在分布于数据中心和各种GPU类型的多个 Kubernetes 集群上构建云原生AI平台。使用Karmada和Volcano,可轻松实现多集群的GPU工作负载智能调度、集群故障转移支持,在保障集群内和跨集群的两级调度一致性和效率,并平衡系统整体资源的利用率和不同优先级工作负载的QoS,以应对大规模、异构的GPU环境管理中面临的挑战。Karmada为多云和混合云场景中的多集群应用管理提供即时可用的自动化管理,越来越多的用户在生产环境中使用Karmada构建灵活高效的解决方案。Karmada已于2023年正式升级为CNCF孵化项目,期待与更多伙伴与开发者们共建繁荣社区。Volcano与主流AI/大数据框架实现了无缝集成,有效解决了AI/大数据任务的作业管理,资源分配,资源调度等问题与挑战,为业界提供了分布式作业训练的最佳实践。在大模型日新月异的今天,Volcano将持续发力,解决多集群AI任务调度等难题,助推大模型训练与推理快速发展。“云原生技术的敏捷性和异构AI计算平台的创新性,将是提升AI生产力的关键。” 顾炯炯谈到,未来,华为云将持续致力于开源创新,与业界同仁、伙伴共同开启智能时代的新篇章。更多云原生技术动向关注容器魔方添加小助手k8s2222进入技术群
推荐直播
-
0代码智能构建AI Agent——华为云AI原生应用引擎的架构与实践
2024/11/13 周三 16:30-18:00
苏秦 华为云aPaaS DTSE技术布道师
大模型及生成式AI对应用和软件产业带来了哪些影响?从企业场景及应用开发视角,面向AI原生应用需要什么样的工具及平台能力?企业要如何选好、用好、管好大模型,使能AI原生应用快速创新?本期直播,华为云aPaaS DTSE技术布道师苏秦将基于华为云自身实践出发,深入浅出地介绍华为云AI原生应用引擎,通过分钟级智能生成Agent应用的方式帮助企业完成从传统应用到智能应用的竞争力转型,使能千行万业智能应用创新。
去报名 -
TinyEngine低代码引擎系列第2讲——向下扎根,向上生长,TinyEngine灵活构建个性化低代码平台
2024/11/14 周四 16:00-18:00
王老师 华为云前端开发工程师,TinyEngine开源负责人
王老师将从TinyEngine 的灵活定制能力出发,带大家了解隐藏在低代码背后的潜在挑战及突破思路,通过实践及运用,帮助大家贴近面向未来低代码产品。
即将直播 -
华为云AI入门课:AI发展趋势与华为愿景
2024/11/18 周一 18:20-20:20
Alex 华为云学堂技术讲师
本期直播旨在帮助开发者熟悉理解AI技术概念,AI发展趋势,AI实用化前景,了解熟悉未来主要技术栈,当前发展瓶颈等行业化知识。帮助开发者在AI领域快速构建知识体系,构建职业竞争力。
即将直播
热门标签