-
全球顶级开源组织云原生计算基金会(Cloud Native Computing Foundation,简称 CNCF)正式宣布其2024年技术监督委员会(Technical Oversight Committee,简称CNCF TOC)席位,华为云云原生开源负责人王泽锋,凭借其在CNCF领域长期卓越的贡献成功当选,成为本届 CNCF TOC 11位技术领军人物之一。CNCF致力于云原生技术的普及和可持续发展,汇集世界顶级厂商,发展至今会员单位已超过750+。CNCF技术监督委员会是CNCF的核心决策团队,为云原生社区提供技术领导,决定CNCF社区的技术走向,由董事会、Maintainer以及End User等多个选区投票产生。一直以来,CNCF TOC主要以欧美专家为主,本届选举中,华为云开源专家王泽锋获得CNCF Maintainer广泛支持,凭借Maintainer选区最高票当选新一届CNCF TOC委员(2024-2026任期)。这也标志着其个人及华为在云原生领域的持续贡献获得产业界的高度认可,代表了整个中国本土贡献者在国际舞台上开源影响力的新高度。云原生产业规模和前景巨大,不少技术领域仍然处于窗口期,可谓机遇与挑战并存。王泽锋表示:“中国在全球云原生产业发展中拥有非常明显的优势:巨大的数字经济规模、丰富的应用场景,不断推动技术层面的创新;不少本土科技公司凭借技术实力已在云原生的核心赛道中占据了重要位置。作为CNCF TOC的新任成员,我将致力于更好地联接国内以及国际开源社区,借助CNCF、华为等平台及资源,携手更多企业、开源组织、学术机构及广大开发者一起,共同推动云原生技术发展与产业标准化,赋能千行万业的数字化转型。”王泽锋:协作创新,共建更有生命力的开源社区作为最早来自中国的Kubernetes维护者之一,王泽锋早在2014年基于 Upstream first 的理念,参与 Kubernetes 上游社区贡献,并于2015年成为了国内最早的 Kubernetes maintainer 之一,其主导的 Kubernetes 社区的多个关键特性和子项目的设计研发工作在社区完成开发后被大量企业用户在生产环境中广泛使用;与此同时,他指导了超过30名开发人员成为Kubernetes和其他CNCF项目的业务骨干、核心开发者。2018 年,王泽锋与同事联合创立了业界首个云原生边缘计算项目KubeEdge 开源项目,并捐赠到 CNCF 基金会,通过开放社区的治理模式与业界开发者协作共享。KubeEdge 也因此成为 CNCF 第一个将云原生技术应用到边缘计算的开源项目。时至今日,KubeEdge 在交通、能源、通信、金融、工业制造、CDN、智慧园区等各行各业已经有了更加深广的应用和普惠价值。此外,他还发起了 Volcano云原生批量计算 、Karmada云原生多集群管理 等多个云原生开源项目,填补了云原生技术在相关领域的技术空白。作为CNCF中国大使,王泽锋在KubeCon + CloudNativeCon 程序委员会任职多年,并于 2023 年担任 KubeCon + CloudNativeCon China 联合主席。作为公认的演讲者,王泽锋多次在 KubeCon Europe 和 KubeCon China 上发表Keynote和分论坛议题演讲。此外,王泽锋一直是Kubernetes贡献者峰会的长期支持者,联合规划和组织多场KCS China、KCD,并从2018年开始,联合策划了 “Cloud Native Days China”系列 Meetup、“Cloud Native Lives”等一系列业内活动;与此同时,由他发起的系列云原生技术公共课程,帮助超过百万的中国开发者构筑云原生技术交流平台,学习和采用云原生技术。技术先驱,引领全球云原生生态圈作为CNCF亚洲唯一创始成员、白金成员,华为对 Kubernetes、Istio 等社区核心项目的贡献一直位居全球前列,社区影响力持续多年亚洲第一,加速了云原生技术从起步到成熟的过程;华为拥有10余位CNCF项目核心Maintainer,出版多部云原生领域技术书籍,是全球云原生开源技术的领导者之一。近年来,华为持续开源创新,先后向CNCF捐献业界首个云原生边缘计算项目KubeEdge、首个云原生算力调度引擎Volcano、首个多云容器编排引擎Karmada等重量级云原生项目,在网络、边缘、调度、多云等技术领域形成了相对成熟生态圈,并开源了Kurator、Kappital、Kuasar、Kmesh等创新项目,加速了云原生与边缘计算、AI、大数据等产业的融合。共享开源价值,为行业发展注入源生动力在数字经济快速演进的大背景下,开源作为数智化转型的创新驱动力,不断催生技术突破和业务创新,发挥出愈加凸显的价值。华为与业界分享生产实践经验及创新成果,与国际云原生社区共发展。未来,面向全球的云原生社区工作有何创新?王泽锋提出了他对CNCF TOC的愿景和其独特的价值:促进跨区域新贡献者和现有贡献者之间的经验分享和沟通。建立公共的维护者地图,帮助新加入的贡献者找到周围的维护者以获得支持和帮助,以新一代的维护者增进社区活力,促进项目的可持续性。建立项目导师和项目冠军机制,帮助加快新开源项目向CNCF的申请/引导过程,以及项目在CNCF沙盒和孵化器中的成长。更清晰的项目推进过程和相应的自动化工具,以减少项目维护者和TOC/TAG成员在观察和评估项目健康和项目成熟度方面所花费的时间。云原生+AI,开源加速构建AI基础设施面对AI时代迎面而来的挑战,华为云在云原生领域持续引领,打造多云场景下的AI云原生基础设施,加速构建AI时代最佳云底座。作为全球最早参与CNCF重点项目产品化的企业之一,华为云早在2015年基于Kubernetes、Istio等上游社区,推出了国内最早的商用容器产品,并于2016年发布国内首个公有云容器服务CCE(云容器引擎)。伴随华为云近年来的高速发展,目前华为云已经陆续发布Serverless容器CCI、应用服务网格ASM、智能边缘平台IEF、分布式云原生UCS等多个创新产品,连续七次登顶IDC发布的中国容器市场份额报告,这也是业界对华为云在容器领域一路领先给与的充分肯定。智能浪潮新形势下,华为云结合在云原生领域的领先优势,打造云原生多云融合基础设施,云原生AI基础设施,云原生Serverless基础设施等系列解决方案,陆续升级发布华为云CCE Turbo,华为云CCE Autopilot,Serverless云耀云容器等创新产品。由华为云开源并捐赠至CNCF的孵化级开源项目也在AI云边协同、AI混部调度、多集群算力分配等技术领域加速行业产品应用升级,为行业智能升级攻坚克难,注入源生动力。未来,华为云云原生将持续与全球开发者紧密合作,共同推进云原生技术的创新与发展,积极推动云原生技术在产业领域的深度融合应用,为促进全球数智化经济的繁荣发展贡献力量。更多云原生技术动向关注容器魔方添加小助手k8s2222进入技术群
-
作者:本文由华为云客户迷你玩投稿背景迷你玩旗下《迷你世界》是一款国产沙盒创意平台,拥有全球数千万创作者进行去中心化内容创作,通过方块组合自由创造等方式,引导用户在平台上创作虚拟作品。2021《迷你世界》的每月活跃玩家人数已超过一亿。《迷你世界》此前面临的突出问题在于服务端的弹性:迷你世界服务器的规格较大,每个服务器上承载了很多游戏服进程,不同玩家的游戏时间上差异也比较大,为了保障深度玩家的游戏体验,即使只有一个玩家还在进行游戏,对应的游戏服务器也是不会缩容的,这必然会影响服务端整体的资源利用率和运营成本。我们期望通过容器灵活规格来解决《迷你世界》服务端的缩容问题,同时提升整个游戏系统的扩缩容、部署升级效率。挑战云原生技术以其灵活性、可扩展性和可维护性等优势,正在迅速改变企业的 IT 架构。第三方报告显示,2022年已经有超过75%的互联网公司在基于K8s部署生产业务,预期2025年这个数字将超过90%。然而在游戏场景中,k8s的还面临一些局限性。首先,游戏业务天然是有状态的,K8S原生的有状态资源StatefulSet并不擅长处理大量的、复杂的状态管理任务。其次,时延敏感性也是一个问题。在游戏中,时延直接影响到游戏的流畅度和玩家的体验,这就对K8s的容器网络实现提出了更高的要求。同时,安全性也是一个挑战。游戏服中可能包含大量的敏感信息,普通容器的隔离程度与虚拟化相比仍有一定差距。解决方案华为云CCE在网络、容器运行时上进行了增强,再配合社区workload,使能《迷你世界》后端全栈容器化,资源使用量较虚拟化部署环境减少了50+%。整体架构如下:网络方面,华为云CCE Turbo提供了一种更接近虚拟机的容器网络,这种模式下,容器成为和虚拟机等同的“一等公民”。容器网卡集成了虚拟网络的能力,比如通过CRD关联到安全组进行安全加固,更细粒度的IP地址管理等。更重要的是,这种容器网络支持Pod直接关联EIP,用户可以直接通过EIP访问应用。EIP的成本管理上,华为云提供了95计费的共享带宽,以多个EIP共享的带宽为计费单元。我们开发了专门的K8s webhook为不同的pod分配不同的共享带宽,来做到最优的成本控制。有状态应用管理方面:我们使用了OpenKruise社区的CloneSet来管理游戏服pod。CloneSet提供了pod的原地升级能力,可以在不重建pod的情况下对运行中的容器进行更新。我们还深度使用了它的定向缩容能力,通过自定义Hooks判断指定游戏服pod是否有活跃玩家,实现对游戏服缩容的精细化控制。OpenKurise的CRD配合控制器的模式在不同的K8s环境中具有良好的扩展性,只要厂商提供社区一致的API,均可正常部署运行。安全方面,当前我们的使用方式是服务端Pod与节点1:1部署,游戏服pod配置关联指定安全组,通过安全组和虚拟化对游戏服进行双重安全加固。效果《迷你世界》完成全量容器化后,在运维效率、资源成本都有了显著优化资源占用节省50%计算资源根据游戏的实施访问量自动管理,定时弹性伸缩配合指标触发的自动弹性伸缩,再加上定向缩容,资源总是能伸缩至合理水平,保障玩家的游戏体验。迭代效率提升容器化缩短了应用的迭代周期,通过灰度发布,流量治理等保证了业务平滑稳定升级,应用升级从小时级提升至分钟级。迷你玩和华为云在未来将Serverless领域加深合作:华为云容器实例服务CCI具有秒级弹性、按量计费的特性,非常贴合我们的应用场景。此外,华为云CCE提供弹性突发引擎,可以将CCI资源池以虚拟节点的方式接入CCE。基于这项能力,我们仅需将与节点强绑定的部分资源稍作调整即可将应用部署到Serverless容器服务中,进一步提升后端的弹性能力。同时CCI基于安全容器构建,独享内核,具有虚拟机级别的安全保障。下一阶段,我们考虑将部分负载逐步迁移到Serverless容器上。
-
北京时间2024年1月23日,KubeEdge 发布 1.16.0 版本。新版本新增多个增强功能,在集群升级、集群易用性、边缘设备管理等方面均有大幅提升。KubeEdge v1.16.0 新增特性:集群升级:支持云边组件自动化升级支持边缘节点的镜像预下载支持使用 Keadm 安装 Windows 边缘节点增加多种容器运行时的兼容性测试EdgeApplication 中支持更多 Deployment 对象字段的 Override支持基于 Mapper-Framework 的 Mapper 升级DMI 数据面内置集成 Redis 与 TDEngine 数据库基于 Mapper-Framework 的 USB-Camera Mapper 实现易用性提升:基于 Keadm 的部署能力增强升级 K8s 依赖到 v1.27 新特性概览 ▍集群升级:支持云边组件自动化升级随着 KubeEdge 社区的持续发展,社区版本不断迭代;用户环境版本升级的诉求亟需解决。针对升级步骤难度大,边缘节点重复工作多的问题,v1.16.0 版本的 KubeEdge 支持了云边组件的自动化升级。用户可以通过 Keadm 工具一键化升级云端,并且可以通过创建相应的 Kubernetes API,批量升级边缘节点。云端升级云端升级指令使用了三级命令与边端升级进行了区分,指令提供了让用户使用更便捷的方式来对云端的 KubeEdge 组件进行升级。当前版本升级完成后会打印 ConfigMap 历史配置,如果用户手动修改过 ConfigMap,用户可以选择通过历史配置信息来还原配置文件。我们可以通过 help 参数查看指令的指导信息:keadm upgrade cloud --help Upgrade the cloud components to the desired version, it uses helm to upgrade the installed release of cloudcore chart, which includes all the cloud components Usage: keadm upgrade cloud [flags] Flags: --advertise-address string Please set the same value as when you installed it, this value is only used to generate the configuration and does not regenerate the certificate. eg: 10.10.102.78,10.10.102.79 -d, --dry-run Print the generated k8s resources on the stdout, not actual execute. Always use in debug mode --external-helm-root string Add external helm root path to keadm --force Forced upgrading the cloud components without waiting -h, --help help for cloud --kube-config string Use this key to update kube-config path, eg: $HOME/.kube/config (default "/root/.kube/config") --kubeedge-version string Use this key to set the upgrade image tag --print-final-values Print the final values configuration for debuging --profile string Sets profile on the command line. If '--values' is specified, this is ignored --reuse-values reuse the last release's values and merge in any overrides from the command line via --set and -f. --set stringArray Sets values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) --values stringArray specify values in a YAML file (can specify multiple)升级指令样例:keadm upgrade cloud --advertise-address= --kubeedge-version=v1.16.0边端升级v1.16.0版本的KubeEdge支持通过 NodeUpgradeJob 的 Kubernetes API 进行边缘节点的一键化、批量升级。API 支持边缘节点的升级预检查、并发升级、失败阈值、超时处理等功能。对此,KubeEdge 支持了云边任务框架。社区开发者将无需关注任务控制、状态上报等逻辑实现,只需聚焦云边任务功能本身。升级 API 样例:apiVersion: operations.kubeedge.io/v1alpha1 kind: NodeUpgradeJob metadata: name: upgrade-example labels: description: upgrade-label spec: version: "v1.16.0" checkItems: - "cpu" - "mem" - "disk" failureTolerate: "0.3" concurrency: 2 timeoutSeconds: 180 labelSelector: matchLabels: "node-role.kubernetes.io/edge": "" node-role.kubernetes.io/agent: ""兼容测试KubeEdge 社区提供了完备的版本兼容性测试,用户在升级时仅需要保证云边版本差异不超过 2 个版本,就可以避免升级期间云边版本不一致带来的问题。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5330https://github.com/kubeedge/kubeedge/pull/5229https://github.com/kubeedge/kubeedge/pull/5289▍支持边缘节点的镜像预下载新版本引入了镜像预下载新特性,用户可以通过 ImagePrePullJob的 Kubernetes API 提前在边缘节点上加载镜像,该特性支持在批量边缘节点或节点组中预下载多个镜像,帮助减少加载镜像在应用部署或更新过程,尤其是大规模场景中,带来的失败率高、效率低下等问题。镜像预下载API示例:apiVersion: operations.kubeedge.io/v1alpha1 kind: ImagePrePullJob metadata: name: imageprepull-example labels: description:ImagePrePullLabel spec: imagePrePullTemplate: images: - image1 - image2 nodes: - edgenode1 - edgenode2 checkItems: - "disk" failureTolerate: "0.3" concurrency: 2 timeoutSeconds: 180 retryTimes: 1 更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5310https://github.com/kubeedge/kubeedge/pull/5331▍支持使用 Keadm 安装 Windows 边缘节点KubeEdge 1.15.0 版本实现了在 Windows 上运行边缘节点,在新版本中,我们支持使用安装工具 Keadm 直接安装 Windows 边缘节点,操作命令与 Linux 边缘节点相同,简化了边缘节点的安装步骤。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/4968▍增加多种容器运行时的兼容性测试新版本中新增了多种容器运行时的兼容性测试,目前已集成了containerd,docker,isulad 和 cri-o 4种主流容器运行时,保障 KubeEdge 版本发布质量,用户在安装容器运行时过程中也可以参考该PR中的适配安装脚本。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5321▍EdgeApplication 中支持更多 Deployment 对象字段的 Override在新版本中,我们扩展了 EdgeApplication 中的差异化配置项(overriders),主要的扩展有环境变量、命令参数和资源。当您不同区域的节点组环境需要链接不同的中间件时,就可以使用环境变量(env)或者命令参数(command, args)去重写中间件的链接信息。或者当您不同区域的节点资源不一致时,也可以使用资源配置(resources)去重写cpu和内存的配置。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5262https://github.com/kubeedge/kubeedge/pull/5370▍支持基于Mapper-Framework的 Mapper 升级1.16.0 版本中,基于 Mapper 开发框架 Mapper-Framework 构建了 Mapper 组件的升级能力。新框架生成的 Mapper 工程以依赖引用的方式导入原有 Mapper-Framework 的部分功能,在需要升级时,用户能够以升级依赖版本的方式完成,简化 Mapper 升级流程。Mapper-Framework 代码解耦:1.16.0 版本中将 Mapper-Framework 中的代码解耦为用户层和业务层。用户层功能包括设备驱动及与之强相关的部分管理面数据面能力,仍会随 Mapper-Framework 生成在用户 Mapper 工程中,用户可根据实际情况修改。业务层功能包括 Mapper向云端注册、云端下发Device列表等能力,会存放在kubeedge/mapper-framework 子库中。Mapper 升级框架:1.16.0 版本 Mapper-Framework 生成的用户 Mapper 工程通过依赖引用的方式使用 kubeedge/mapper-framework 子库中业务层功能,实现完整的设备管理功能。后续用户能够通过升级依赖版本的方式达到升级 Mapper 的目的,不再需要手动修改大范围代码。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5308https://github.com/kubeedge/kubeedge/pull/5326▍DMI 数据面内置集成 Redis 与TDEngine数据库1.16.0 版本中进一步增强 DMI 数据面中向用户数据库推送数据的能力,增加 Redis 与 TDengine 数据库作为内置数据库。用户能够直接在 device-instance 配置文件中定义相关字段,实现 Mapper 自动向 Redis 与 TDengine 数据库推送设备数据的功能,相关数据库字段定义为:type DBMethodRedis struct { // RedisClientConfig of redis database // +optional RedisClientConfig *RedisClientConfig `json:"redisClientConfig,omitempty"` } type RedisClientConfig struct { // Addr of Redis database // +optional Addr string `json:"addr,omitempty"` // Db of Redis database // +optional DB int `json:"db,omitempty"` // Poolsize of Redis database // +optional Poolsize int `json:"poo lsize,omitempty"` // MinIdleConns of Redis database // +optional MinIdleConns int `json:"minIdleConns,omitempty"` }type DBMethodTDEngine struct { // tdengineClientConfig of tdengine database // +optional TDEngineClientConfig *TDEngineClientConfig `json:"TDEngineClientConfig,omitempty"` } type TDEngineClientConfig struct { // addr of tdEngine database // +optional Addr string `json:"addr,omitempty"` // dbname of tdEngine database // +optional DBName string `json:"dbName,omitempty"` }更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5064▍基于Mapper-Framework的USB-Camera Mapper实现基于KubeEdge 的 Mapper-Framework,新版本提供了 USB-Camera 的 Mapper 样例,该 Mapper 根据 USB 协议的 Camera 开发,用户可根据该样例和 Mapper-Framework 更轻松地开发具体业务相关的 Mapper。在样例中提供了 helm chart 包,用户可以通过修改 usbmapper-chart/values.yaml 部署 UBS-Camera Mapper,主要添加 USB-Camera 的设备文件, nodeName, USB-Camera 的副本数,其余配置修改可根据具体情况而定,通过样例目录中的 Dockerfile 制作 Mapper 镜像。global: replicaCounts: ...... cameraUsbMapper: replicaCount: 2 #USB-Camera的副本数 namespace: default ...... nodeSelectorAndDevPath: mapper: - edgeNode: "edgenode02" #USB-Camera连接的缘节点nodeName devPath: "/dev/video0" #USB-Camera的设备文件 - edgeNode: "edgenode1" devPath: "/dev/video17" ...... USB-Camera Mapper 的部署命令如下:helm install usbmapper-chart ./usbmapper-chart更多信息可参考:https://github.com/kubeedge/mappers-go/pull/122▍易用性提升:基于 Keadm 的部署能力增强添加云边通信协议配置参数在 KubeEdge v1.16.0 中,使用keadm join边缘节点时,支持使用--hub-protocol 配置云边通信协议。目前 KubeEdge 支持 websocket 和 quic 两种通信协议,默认为 websocket 协议。命令示例:keadm join --cloudcore-ipport <云节点ip>:10001 --hub-protocol=quic --kubeedge-version=v1.16.0 --token=xxxxxxxx说明:当--hub-protocol设置为 quic 时,需要将--cloudcore-ipport的端口设置为10001,并需在CloudCore的ConfigMap中打开quic开关,即设置modules.quic.enable为true。操作示例:使用 kubectl edit cm -n kubeedge cloudcore,将 quic 的 enable 属性设置成 true,保存修改后重启 CloudCore的pod。modules: ...... quic: address: 0.0.0.0 enable: true #quic协议开关 maxIncomingStreams: 10000 port: 10001 ......更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5156keadm join 与 CNI 插件解耦在新版本中,keadm join边缘节点时,不需要再提前安装 CNI 插件,已将边缘节点的部署与 CNI 插件解耦。同时该功能已同步到 v1.12 及更高版本,欢迎用户使用新版本或升级老版本。说明:如果部署在边缘节点上的应用程序需要使用容器网络,则在部署完 EdgeCore 后仍然需要安装 CNI 插件。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5196▍升级 K8s 依赖到 v1.27新版本将依赖的 Kubernetes 版本升级到 v1.27.7,您可以在云和边缘使用新版本的特性。更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5121 版本升级注意事项 新版本我们使用 DaemonSet 来管理边端的 MQTT 服务 Eclipse Mosquitto 了,我们能够通过云端 Helm Values 配置来设置是否要开启 MQTT 服务。使用 DaemonSet 管理 MQTT 后,我们可以方便的对边端 MQTT 进行统一管理,比如我们可以通过修改 DaemonSet 的配置将边端 MQTT 替换成 EMQX。但是如果您是从老版本升级到最新版本,则需要考虑版本兼容问题,同时使用原本由静态 Pod 管理的 MQTT 和使用新的 DaemonSet 管理的 MQTT 会产生端口冲突。兼容操作步骤参考:1、您可以在云端执行命令,将旧的边缘节点都打上自定义标签kubectl label nodes --selector=node-role.kubernetes.io/edge without-mqtt-daemonset=""2、您可以修改 MQTT DaemonSet 的节点亲和性nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - ... - key: without-mqtt-daemonset operator: Exists3、将节点 MQTT 改为由 DaemonSet 管理# ------ 边端 ------ # 修改/lib/systemd/system/edgecore.service,将环境变量DEPLOY_MQTT_CONTAINER设置成false # 这步可以放在更新EdgeCore前修改,这样就不用重启EdgeCore了 sed -i '/DEPLOY_MQTT_CONTAINER=/s/true/false/' /etc/systemd/system/edgecore.service # 停止EdgeCore systemctl daemon-reload && systemctl stop edgecore # 删除MQTT容器,Containerd可以使用nerdctl替换docker docker ps -a | grep mqtt-kubeedge | awk '{print $1}' | xargs docker rm -f # 启动EdgeCore systemctl start edgecore # ------ 云端 ------ # 删除节点标签 kubectl label nodes without-mqtt-daemonset新版本的 keadm join 命令会隐藏 with-mqtt 参数,并且将默认值设置成 false,如果您还想使用静态 Pod 管理 MQTT,您仍然可以设置参数--with-mqtt来使其生效。with-mqtt 参数在 v1.18 版本中将会被移除。 致谢 感谢 KubeEdge 社区技术指导委员会(TSC)、各 SIG 成员对 v1.16.0 版本开发的支持与贡献,未来 KubeEdge 将持续在新场景探索与支持、稳定性、安全性、可扩展性等方面持续发展与演进!▍相关链接Release Notes:cid:link_0更多云原生技术动向关注容器魔方添加小助手k8s2222进入技术群
-
Kurator 是华为云开源的面向分布式云原生环境的一站式解决方案。它利用 Karmada 作为多集群编排基础,内置集成了Istio、Prometheus、Thanos、Volcano、KubeEdge、Argo 等主流云原生技术。基于此,Kurator 构建了包括集群舰队管理、集群生命周期管理、统一应用分发、流量治理、监控和策略管理在内的分布式云平台管理能力。在最新 0.6.0 版本中,Kurator 为云原生应用增加了 CI/CD 流水线设置与管理功能,简化流水线创建。此外,强化了 0.4.0 版本发布的统一应用分发功能,可以在部署新应用时设置金丝雀(灰度)发布、A/B 测试、蓝绿发布三种渐进式发布策略。新增的流水线特性和渐进式发布功能与统一分发能力结合,实现基于代码仓库的 GitOps 工作流。这有助于快速构建分布式云原生平台,简化应用开发与发布流程。Kurator CI/CD 的结构图如下所示:用户更新代码仓库后,触发 Kurator 流水线,完成代码拉取、检查、编译并构建镜像。其后,用户更新应用部署模板,例如更改应用配置中的镜像信息。Kurator Application Controller 侦测到配置更新,将自动触发已应用的渐进式发布策略,实现应用的自动发布。如此一来,整个软件研发生命周期以代码为中心,实现开发至发布完整流程的自动化,简化运维、部署工作。 流水线 CI/CD 流水线实现源码到发布的自动化过程,包括源码管理、检查、测试等阶段。但由于每个阶段技术需求不同,导致流水线配置和管理难度大。Kurator 参考开源项目 Tekton,通过预定义常用任务模版的方式简化流水线创建操作。用户只需指定任务名称和代码仓库访问凭证即可创建流水线,使用门槛低。对熟悉流水线的高级用户,Kurator 也支持自定义任务。用户可以根据自己需求定制任务内容,满足个性化场景。通过预置任务模板和自定义任务的能力,Kurator 大幅简化了流水线配置和管理的难度。从图中可以看出,在使用流水线时,Kurator 完成了大部分工作。用户只需配置运行环境,选择任务模板即可完成流水线创建,大大减少学习成本。特别是与传统Tekton 相比,Kurator 提供了预定义任务模板,用户只关注任务内容而不再处理具体实现,实现了流水线使用的极致简化。除了简化流水线的创建操作外,Kurator 还考虑到了软件供应链安全,可以在流水线构建镜像时自动为其添加数字签名和源头证明,以防范假冒镜像,保证镜像源头可靠,保证在镜像制作方面的安全性。软件供应链安全指的是保护软件从开发到部署的整个生命周期过程中的安全性。软件供应链安全可以提高软件安全性能和用户信任度,预防恶意代码渗透。签名和证明添加后,镜像将自动上传至仓库。在镜像仓库中可以直接查看镜像签名和证明的详细情况,如图所示。用户可以用签名过程生成的公钥验证镜像签名和源头。这样在生产中,生产者仅需公布签名公钥,就能让用户验证数字签名和来源证明。接下来将展示一个在 Kurator 中创建一个流水线的示例:在流水线定义 spec.tasks 中指定任务名称,即可选择 Kurator 内置的常用任务模板。目前内置的常用任务模板包括:名称任务目标git-clone拉取源码go-test运行go代码单元测试go-lintgo源码静态检查build-and-push-image编译,构建镜像并上传此外,通过 customTask 定义可以发布自定义任务。通过指定 image、command 和 args,实现定制任务需求,如上述示例中自定义任务完成的工作就是打印README.md。更多的示例和细节,请参考: https://kurator.dev/docs/pipeline/ 渐进式发布 金丝雀发布、A/B 测试和蓝绿发布都是主流的应用发布策略,可有效减少上线风险。Kurator 0.6.0 在原统一应用分发基础上,增加渐进式发布功能。现在应用可以指定三种渐进式发布策略中的一种策略。同时,可以将具备发布能力的统一分发,与 CI/CD 流水线结合起来,实现基于代码仓库的 GitOps 工作流。▍金丝雀发布金丝雀部署是一种渐进式发布策略。先向少数用户发布新的软件版本进行测试,根据测试结果,决定是否向更多用户推出新版本。旨在最大限度地减少新版本上线后对用户的影响,是一种更安全、更可靠的软件发布策略。参阅以下的操作示例,了解如何使用 Kurator 配置金丝雀发布。通过配置 rollout 中的 workload 字段,可以将金丝雀发布的目标设置为 webapp 命名空间下名为 backend 的应用。发布目标除了支持 deployment 应用之外,还支持 daemonSet应用。流量分析使用 Kurator 内置的请求成功率(request-sueccess-rate)和平均访问时延(request-duration)两个指标作为衡量新版本是否健康的标准。其中通过 thresholdRange 指定阈值。示例中要求请求成功率大99%,平均访问时延小于 500ms,新版本的服务才会被认定为健康。rolloutPolicy.canaryStrategy 配置了每次测试成功后,下次流量递增的比例和最终允许测试版本流量占比的最大值,从而实现渐进式发布新版本。示例中每次递增 10% 的流量流向新版本,最多为 50%。也可以设置 maxWeight 为 55,这样在最后一次测试的时候,只会新增 5% 的流量流向新版本。除了这些配置之外,Kurator 还可以设定完成验证之后,流量以什么样的比例逐步流向新版本。更多细节请参考: https://kurator.dev/docs/fleet-manager/rollout/canary/▍A/B测试A/B 测试为效果测试,是验证应用两版本表现的测试方法。它通过将用户分到不同组,每个组体验不同版本,然后分析每个组用户在使用过程中的各项指标,选择效果较好的版本。A/B 测试也可以先让部分用户试用新版本,收集真实环境下的用户反馈,再决定是否上线新版本。了解如何在 Kurator 配置应用的 A/B 测试,请参考下方操作示例。和金丝雀发布类似,由 workload 指定 A/B 测试的目标。通过 metric 指定测试的指标。A/B 测试和金丝雀发布不同的点在于需要配置 match 中的匹配规则,实现流量分组。上述 match 配置是只有 http 请求头满足使用 FireFox 浏览器或请求的 cookie 中包含 “type=insider” 的情况下,请求才会被转发到新版本。通过对不同请求头的处理达到对用户分组的效果,对不同的版本进行效果测试。除了匹配请求头之外,还能匹配 URI、端口号等。更多细节请参考: https://kurator.dev/docs/fleet-manager/rollout/abtest/▍蓝绿发布蓝绿发布是一种渐进零停机发布方法。它将生产环境分为两个独立运行的蓝绿环境,蓝环境承载当前实际流量,绿环境预部署新版本。新版本通过测试后,只需切换流量到绿环境,就能实现零停机升级。蓝环境备用支持回滚。通过实时扩容,可近乎零停机完成迭代交付,提高发布效率和用户体验。了解如何在 Kurator 配置蓝绿发布的操作示例,请参考下方。蓝绿发布需要配置目标应用、测试指标、迭代次数和容许测试失败的次数,其中测试的迭代次数由 analysisTimes 指定,容许测试失败的次数由 checkFailedTimes指定,除此之外无需配置别的规则。因为蓝绿发布在测试新版本的时候是将全局流量转发到绿环境中进行测试,没有金丝雀发布的渐进式流量递增和 A/B 测试的对用户分组的需求。更多细节请参: https://kurator.dev/docs/fleet-manager/rollout/blue-green/ 未来展望 综上所述,通过 CI/CD 流水线和渐进式发布功能,Kurator 实现了从源码到发布的完整流水线自动化,真正提升了开发效率和运维能力,实现开发、配置和发布的应用全流程生命周期管理。此外还大幅简化了采用 CI/CD 流水线和渐进式发布的门槛。随着 Kurator 的不断迭代升级,我们还将继续为流水线添加更多的预定义任务模板,为渐进式发布提供更多的测试指标。欢迎大家试用 Kurator 并提出宝贵的意见与需求。Kurator的门户为:cid:link_0随着功能的逐渐完善,Kurator 将成为用户快速立体掌握云原生技术体系、高效运行分布式应用的强大工具。参考链接Kurator项目地址:cid:link_0CI/CD流水线:https://kurator.dev/docs/pipeline/软件供应链安全:https://kurator.dev/docs/pipeline/chain-security/渐进式发布:https://kurator.dev/docs/fleet-manager/rollout/金丝雀发布:https://kurator.dev/docs/fleet-manager/rollout/canary/A/B测试:https://kurator.dev/docs/fleet-manager/rollout/abtest/蓝绿发布:https://kurator.dev/docs/fleet-manager/rollout/blue-green/更多云原生技术动向关注容器魔方添加小助手k8s2222进入技术群
-
源代码是企业最宝贵的资产之一,随着软件规模的不断扩大,企业管理庞大的源代码成为一个重大挑战。为了保持企业员工持续稳定地开展软件开发活动,一个好用的代码管理平台变得尤为重要。代码管理工具是软件开发的基础,能够帮助团队协作更加高效,自动化交付更加流畅。因此,选择一款优秀的代码管理平台能够有效提升团队协作效率和自动化交付效率,从而更好地满足企业的软件开发需求。本期 【云享问答】 通过这10个问题,带你全方位了解华为云CodeArts Repo代码托管带来的开发体验。💬 1、什么是代码托管?代码托管服务有什么优势? 代码托管服务是基于Git的在线代码托管服务,具有安全高效、跨地域协同开发、代码浏览方便、集成工具、易于管理、易于合作、共享代码等优势。💬 2、开发者在选择代码托管服务时要注意哪些因素? 选择代码托管服务时,需考虑多方面因素。首先要确保服务有足够的安全性和隐私性,防止代码泄露或损失。其次,性能和稳定性也至关重要,以确保代码的快速访问和修改。同时,成本、可扩展性也是选择的关键因素。另外,用户界面是否友好易用,集成工具是否丰富,也是开发者关注的重点。除此之外,良好的支持、活跃的社区以及符合项目需求和法律规定的政策和规定,也都为选择代码托管服务提供了重要参考。💬 3、华为云CodeArts Repo 与DevOps有什么不同?CodeArts Repo有哪些特性?华为云CodeArts Repo与DevOps的不同之处在于它们的目标和作用范围。DevOps是一种开发模式,强调开发人员和运维人员之间的紧密协作,以快速、高效地交付高质量的软件。而华为云CodeArts Repo是一种具体的工具,主要用于代码管理和协同开发,以支持DevOps实践。CodeArts Repo是华为云基于自主研发内核的一款代码管理工具,提供全方位的代码托管服务,沉淀了华为多年内部代码管理经验,助力企业高效协同开发与项目管理。其拥有六大特性,确保代码安全稳定高效开发,支持多种开发场景,提升代码质量并传递开发经验。通过质量门禁确保入库代码质量,双向可追溯记录代码来龙去脉,内置多种模板确保开发规范有序。💬 4、华为云代码托管的工作模式是什么?代码托管(CodeArts Repo)采用Git Flow作为基础工作模式。Git-Flow提供了一组建议,通过严格执行这些建议的规则,帮助中小型研发团队,能够更好的规范自己的开发工作。并行开发:各个特性与修复bug,可以并行;团队协作:多人开发过程中,大家都能够理解其他人的当前工作;灵活调整:通过hotfix分支,支持各种紧急修复的情况;master分支:最为稳定,功能比较完整,随时可发布的代码;develop分支:用于平时开发的主分支,并一直存在,永远是功能最新最全的分支,包含所有要发布到下一个release的代码,主要用于合并其他分支;feature分支:用于开发新的功能的分支,一旦开发完成,通过测试,合并回develop分支进入下一个release;release分支:用于发布准备的专门分支;hotfix分支:用于修复线上代码的bug 。💬 5、在开发者应用的过程中,CodeArts Repo对开发环境和版本的要求如何? CodeArts Repo对开发环境和版本的要求,主要有三个方面:1、浏览器兼容:建议使用Chrome和Microsoft Edge,同时也支持IE10+、Firefox和Safari。2、分辨率:推荐1920*1080或更高。3、单个仓库规格:页面单文件上传≤10MB本地单文件推送≤200MB在线修改代码保存行数≤5000行仓库总容量≤2GB。 💬 6、CodeArts Repo适合哪些类型的企业和人群使用?CodeArts Repo主要适合开发人员、运维人员、项目管理人员和高校师生等人群使用。对于开发人员,它提供了代码托管、版本控制和代码检视等功能;对于运维人员,它确保了代码的安全和稳定性;对于项目管理人员,它支持多组织协同和权限控制;对于高校师生,它提供了完整的教学环境和丰富的代码仓库模板。💬 7、开发者在应用代码托管服务时,如何防止软件代码被他人Copy? 处理方法1:主要依赖于软件和监控手段来防止代码泄露封闭USB接口和蓝牙接口,防止外部数据传输;安装特殊软件,监控并限制上传行为;监控特定文件的上传,需注意防止文件改名、压缩、混淆后上传;监控上传到特定网站,需防止上传到未知网络服务、邮件地址、自建服务器;监控电脑操作并记录,但这种方式只能在代码泄露后作为证据,不能事前防范。处理方法2:采取更严格的硬件和访问控制 禁止个人笔记本和不明来源的IP地址,确保只有授权设备能访问;企业全面采用华为云的云电脑(云桌面)进行开发,确保代码只存储在云端;限制只有云桌面可以访问软件开发生产线帐户,其他IP地址不允许访问;所有代码只存储在云端,无法拷贝到外部,确保代码不被泄露。 💬 8、CodeArts Repo有哪些安全特性?在代码托管(CodeArts Repo)产品层面具有以下安全特性:基于角色与权限的细粒度授权:在CodeArts Repo层面,提供针对代码访问的,更加细粒度的授权模型;不可抵赖性:我们提供代码仓库的完整访问日志,供用户审计;数据加密:用户的代码在CodeArts Repo中,是以加密方式存储的。 💬 9、CodeArts Repo如何确保代码安全?CodeArts Repo通过安全管理,合并请求和提交规则管理确保代码安全:合并请求和提交规则管理,保证代码上传质量;部署密钥和IP白名单,控制代码上传下载权限;在代码仓库中显示代码的界面增加水印,降低代码资产泄露风险,保证代码安全;审计日志,动态保证可追踪性;锁定仓库,保证版本确定性,防止未经授权的代码提交。💬 10、在应用的过程中,CodeArts Repo是如何解决较为严重的IO负载问题的?可以通过规避大量的上传和下载来解决,解决方式如下: 1、识别已经上传过的,不进行二次上传操作,减少上传次数。2、读写分离,规避频繁上传下载。3、Hash分片存储。更多关于CodeArts Repo的功能,可进入产品官网免费开通基础版使用
-
23年【云声·建议】反馈活动第十场来啦~本月为今年最后一场累积兑换奖励月份,各位小伙伴抓紧机会,其中不限建议数量的高价值建议奖仍然保留,数量不限。8-10月累积金额最高的小伙伴有机会兑换华为GT系列手表哦~快来云声提优化建议吧!【活动时间】10月1日-10月31日【活动对象】所有华为云用户如果您是新用户您也可以先去体验我们的免费云产品服务~再来吐吐槽~如果您是老用户功能问题?体验不好?快来云声提建议告诉我们吧!!【奖项设置】有效建议总积分第1名:300元开发者盲盒礼包有效建议总积分第2-3名: 200元开发者盲盒礼包有效建议总积分第4-10名:100元开发者盲盒礼包其中反馈高价值优质建议奖的用户额外获得100-200元开发者盲盒礼包(建议数量不限,可与其他奖项叠加)PS:10月云声获奖用户的奖励金额可以选择累积与8-9月份激励一起发放一次集中兑换可选择兑换电子产品或者其他开发者定制礼品累积金额1000+有机会兑换华为GT系列手表、无线耳机等~【活动规则】1.有效建议积分云声关联产品/功能分为云产品建议、解决方案建议、平台建议,三种类型的建议对应的分值不相同,云产品建议(1分)、解决方案建议(0.5分)、平台建议(0.1分),按照当月有效建议类型对应不同分值以及邀请加分项来进行计算总排名,关联产品/功能可在云声提建议页面查看,示例如下;说明:云声关联产品/功能分别对应以上3种类型,取决于建议内容实际对应的产品/功能,与实际关联的标签无关。2.优质建议奖1)经内部产品研发团队评估为高价值优质建议奖的用户,额外奖励100元开发者盲盒礼包/人说明:高价值建议数量不限,且与有效建议积分奖可叠加,每位用户每月最多可获得一次;高价值优质建议要求建议能被采纳,以及内部评估建议对产品优化改进有重要作用;建议内容需要表述清晰,有明确的建议方案,最好有操作截图或链接等能进一步详细描述。3.注意事项1)若出现积分相同且排名一致的情况,在每月的已实现和已采纳建议中,会选出价值更高的建议用户给予奖励,基础评分计算规则,可参考如下表格。若同名次出现同分情况,由内部工作人员评选建议价值度更高的用户获奖2)同一用户在同一页面(文档)提出的同一类问题(包括但不限于错别字、语句不通顺、视觉体验等),在通过审核后仅算作一条有效建议数3)若发现代他人提交优化建议,此建议分值只取原分值30%4)兑换礼品以仓库现有礼品为准,不可以指定,如遇商品缺货,将随机换成其他等价值礼品发放
-
众所周知,桌面集成开发环境(IDE)已经融入到开发的各个环节,对开发者的重要性和广泛度是不言而喻的,而开发插件更是建立在IDE基础上的功能Buff。Huawei Cloud ToolKit作为华为云围绕其产品能力向开发者桌面上的延伸,帮助开发者快速在本地连接华为云,打通华为云到开发者的最后一公里。接下来,将通过十问十答的方式,带领大家全面了解Huawei Cloud ToolKit。💬 1、为什么开发者日常开发需要IDE及开发插件?IDE的中文名字是集成开发环境,对于软件开发者而言是编码必不可少的工具,通常提供代码编辑、编译、调试等基本功能。对于一个非脚本式的工程开发,IDE对开发者而言是刚需。IDE插件是IDE基本能力上的一次升级,可以在IDE平台功能基础上定制化功能提供给开发者。华为云开发者插件在不同的IDE平台上向开发者提供了对接华为云的能力,方便开发者快速上云。💬 2、为了帮助开发者更好的使用华为云产品,华为云推出了哪些便捷工具或平台?华为云开发者插件平台(Huawei Cloud Toolkit)是围绕华为云开发者生态工具体系打造的一系列的 IDE 插件,支持IntelliJ平台、VSCode、华为自研CodeArts IDE,帮助用户快速连接华为云。支持华为云 API 能力对接、自然语言一键转换成 C++、Java 等标准代码、一键部署到云端等等。Huawei Cloud Toolkit主要是针对企业开发者、高校开发者。它可以帮助企业开发者在工作过程中快速上手、开箱即用、提质增效;帮助高校开发者灵活使用、简洁易用、方便特性,在工作、实验、练习、培训过程中提供很大便利。Toolkit可与主流IDE及华为云其他产品无缝集成,帮助开发者简化应用部署到服务器,尤其是华为云服务器中的操作。「开箱即用,全面免费」确保开发者快速上手,真正做到降本提效。💬 3、通过在IDE环境中集成Toolkit插件,开发者可以轻松完成哪些工作?Huawei Cloud Toolkit具备以下5个能力:1、API开放能力:Huawei Cloud Toolkit插件深度融合了华为云API的开放能力,快速、高效集成华为云API,支持用户检索API、查看API文档、调试API;2、代码补全能力:编程过程中支持SDK代码片段补全,加速用户集成华为云应用。3、一键部署能力:支持快速部署,一键部署到ECS、CCI;4、代码检查能力:提供业界规范(含华为云)检查,支持一键格式化和代码自动修复;5、其他能力:还支持包括微服务工程搭建等在内的诸多能力。并且随着Huwei Clud Toolkit下的插件市场不断扩大,其能力在不断的提升,若想查看插件具体能力请前往插件能力分布。💬 4、Toolkit系列插件支持哪些IDE平台,如何在这些IDE平台获取到Toolkit?当前,Huawei Cloud Toolkit提供了 10 个插件工具,具体能力分别如下:1、Huawei Cloud API:华为云API插件提供华为云服务全量API检索、调试、SDK代码自动补全、集成华为云CLI、示例代码等功能;2、Huawei Cloud DevSpore:华为云DevSpore插件支撑开发者在IDE上快速完成企业级微服务工程搭建;3、Huawei Cloud FunctionGraph:华为云FunctionGraph插件是Serverless产品的IDE插件,提供函数本地调试、运行、云端部署等功能;4、Huawei Cloud CodeArts Check:华为云代码检查插件提供业界规范(含华为云)检查,支持一键格式化和代码自动修复,当前支持Java、C++、C;5、Huawei Cloud CodeArts Snap:华为云 CodeArt Snap 智能编程助手致力于打造现代化开发新范式,通过将自然语言转化为规范可阅读、无开源漏洞的编程语言,提升开发者编码效率,助力企业快速响应市场不确定性;6、Huawei Cloud Toolkit Platform:华为云底座插件为华为云各类云服务插件提供公共能力,比如单点登录、UI集成、API访问等功能;7、Huawei Cloud ModelBox DevKit:华为云ModelBox插件帮助开发者更高效、便捷地注册ModelBox框架支持的设备及搭建ModelBox开发环境;8、Huawei Cloud Deploy:华为云部署插件旨在帮助开发者更高效、更方便地构建应用程序,支持将应用一键部署到ECS、CCI等;9、Huawei Cloud Developer Technical Support:华为云开发者技术支持插件支持开发者管理问题单、提供诸如搜索、提交问题单等功能;10、Open Capability Center/Huawei Cloud DeveloperKit:华为云开放能力中心插件关联华为云各云服务开发指南、视频课程、沙箱、API、SDK 和示例代码,帮助开发者更快地了解华为云、学习华为云、集成华为云。除此以为,作为能够为华为云各类业务插件提供公共能力的底座插件,Huawei Cloud Toolkit Platform还提供如下功能:1、为所有 Huawei Cloud Toolkit 插件提供单点登录。2、为所有 Huawei Cloud Toolkit 插件提供能访问华为云服务的 API。3、为所有 Huawei Cloud Toolkit 插件提供 UI 集成能力。4、在IntelliJ系列平台和VS Code IDE,底座插件是 Huawei Cloud Toolkit系列插件的基础,若想使用其他插件的能力,请提前安装好底座插件并完成账号登录。💬 5、Toolkit支持在本地IDE连接到哪些华为云服务和产品?💬 6、相较市面上开发插件,Toolkit能够为开发者带来哪些便利?Huawei Cloud Toolkit 支持多个平台,包括IntelliJ系列、VSCode IDE、华为自研CodeArts IDE。Huawei Cloud Toolkit 的插件不仅支持公有云,同时还可以支撑本地化部署的私有云/混合云。💬 7、如何使用Toolkit来连接到华为云数 据库,并在本地进行测试和调试?RDS是华为云提供的数据库功能,开通RDS服务后,可以利用Huawei Cloud API插件在代码侧直接调用服务API,也可以在线调试。支持相关API代码一键补全等等。请参考帮助文档。💬 8、如何通过Toolkit快速调试华为云OpenAPI?开发者可以在入口函数处利用API自动生成API生成补全代码,然后需要手动补全AK、SK等用户信息后可以直接调试API。还可以利用API插件的在线调试功能,补全相关必选参数即可在线快速调试。💬 9、很多开发者使用Anaconda的Jupyter notebook和Spyder,Toolkit是否考虑开发这两者的插件?Jupyter notebook更多是作为一个交互式的命令行工具在做一些简单的调试,Spyder也是一个轻量级的IDE。对于Python开发者而言,Pycharm是更强大更主流的工具。Huawei Cloud Toolkit支持IntelliJ平台下的Pycharm。后续不排除考虑开发Jupyter notebook和Spyder的插件的可能,但尚未提上议程。💬 10、开发者如果想要从入门到深入了解使用Toolkit ,有哪些实用建议?Classroom是基于华为云的云上一站式教学实践平台,提供云上软件教学服务,支持帮助学习插件toolkit技术,包含MOOC课程,教学市场,云端实验室,伙伴赋能,竞赛赋能,高校联盟六大板块,支持高校师生实现备课、上课、作业、考试、实验、实训等全教学流程的线上教学,提供多类习题自动判题、企业级DevOps实训、免费在线习题库等众多高级特性辅助进行数字化教学转型。开发者登录Classroom平台后,选择MOOC课程模块,选择Toolkit课程进入课程了解华为云Toolkit产品的功能以及学习插件的使用,同时可以利用Classroom平台上的云端实验室模块进行沙箱实验。更多Huawei Cloud Toolkit 指南等你了解:cid:link_1Classroom平台:cid:link_2
-
华为GES图引擎服务优质博文精选图数据基础知识 & GES介绍人人都在谈的图数据库到底是个啥? 作者:你好_TT, 2021-05-08从零开始学Graph Database:什么是图 作者:弓乙, 2022-10-08画张图,就能秒级洞察千亿复杂关系 2021-01-12华为云新一代黑科技核心算法揭秘 作者:mr.FangYang, 2018-08-21云图说-解析华为云”黑科技“---图计算技术 作者:阅识风云, 2018-07-10聊聊图的相似性 作者:你好_TT, 2021-12-25图算法实践之k-hop 作者:你好_TT, 2021-05-12GES容灾介绍 2023-07-22【干货】华为云图数据库GES技术演进 作者:Chenyi, 2023-08-23华为云GES:十年磨一剑,打造业界一流的云原生分布式图数据库 2023-08-24GES使用指引 &图进阶学习华为云图引擎服务 GES 实战——创图 作者:你好_TT, 2021-08-22调用 GES 服务业务面 API 相关参数的获取 作者:你好_TT, 2021-08-23图数据库对 NULL 属性值支持情况 作者:你好_TT, 2021-06-18Gremlin语言学习系列链接汇总 作者:你好_TT, 2021-02-05如何使用GES进行社交关系考据?---GES查询能力介绍 作者:弓乙, 2021-10-19聊聊图上超级快的多跳过滤查询 作者:弓乙, 2023-4-12使用GES4Jupyter连接GES并进行图探索 作者:蜉蝣与海, 2022-06-25使用参数化查询提高Cypher查询的性能 作者:蜉蝣与海, 2022-04-10记一次图引擎GES cypher慢查询的分析与优化作者:蜉蝣与海, 2022-05-08GES对图细粒度权限控制的支持 作者:你好_TT, 2021-12-29使用Cypher子查询进行图探索 作者:蜉蝣与海, 2023-05-10华为云图引擎服务GES属性管理进阶 2024-01-15GES场景化应用全链路数据血缘在满帮的实践 作者:你好_TT, 2021-12-09GES与Flink的对接 作者:你好_TT, 2021-12-29要想推荐系统做的好,图技术少不了 作者:你好_TT, 2021-12-27图计算助力智慧金融 作者:你好_TT, 2020-04-18扒一扒GES如何赋能互联网电商风控 作者:Dr Thunder, 2021-04-23使用GES处理金融风控场景示例一 作者:图森破, 2020-05-19基于人货场的电商知识图谱的构建 作者:某某人, 2020-07-04采用GES构建锅炉仿真系统的关系图谱 作者:犀牛, 2020-06-28基于GES图数据库的网络架构模型构建 作者:左手看星星, 2020-07-29华为云ModelArts与图引擎联手打造,图深度学习强势落地! 作者:我们都是云专家, 2019-08-08基于GES图数据库的大规模数据追溯服务优化 2021-03-03618 技术特辑(一)不知不觉超预算3倍,你为何买买买停不下来? 作者:技术火炬手, 2021-06-11云图说-复杂网络的破解之道,图引擎带你径直迈向成功作者:阅识风云, 2019-10-16云图说-互联网应用的关系分析利器——企业EI的百晓生“图引擎”作者:阅识风云, 2019-04-19爱库存X华为云:乘“云”破浪,逐梦新电商: 外部链接 云社区链接构建站点数字孪生,支撑确定性运维:华为云九洲云图CloudMap 作者:HWCloudAI 2023-03-315分钟迁移关系型数据库到图数据库 作者:RiverSide 2023-07-17HyG超大规模图计算引擎专题GES图计算引擎HyG揭秘之图切分 作者:π, 2022-06-23CSR格式如何更新? GES图计算引擎HyG揭秘之数据更新 作者:π, 2023-06-15图神经网络 & 图深度学习专题图嵌入&知识表征の初体验 作者:图森破, 2020-05-15在OCR场景使用GCN图卷积 作者:图森破, 2020-06-11风控领域图深度学习算法思考 作者:图森破, 2020-07-14知识图谱trans系列算法介绍 作者:图森破, 2021-06-29图嵌入算法介绍 作者: 图森破, 2021-06-29图神经网络!打开企业盈利的下一个风口 作者:chenyi, 2019-12-28图卷积神经网络初探 作者:chenyi, 2019-11-29图技术漫谈Neo4j闭源转商,成为强大图计算平台还需要几步?作者:chenyi, 2019-12-28Freebase Data Dump结构初探, 作者:蜉蝣与海, 2021-07-27带你认识图数据库性能和场景测试利器LDBC SNB, 作者: 闹闹与球球, 2022-06-24从图引擎平台技术,看华为云EI的决心和野心作者:chenyi, 2018-01-29使用Jupyter可视化图查询语言Cypher语法树 作者:蜉蝣与海, 2022-08-22Euler浅析 作者:弓乙, 2019-01-23从两个开源图数据库PR看查询执行时的编码设计问题 作者:蜉蝣与海, 2022-05-03Notebook案例精选图数据库实践-新冠患者轨迹追溯电商风控案例教育知识图谱利用图数据库研究COVID-19论文数据集基于图引擎的医药查询系统Koolab新冠患者轨迹追溯端边云Serverless大数据湖解决方案附录:GES首页:cid:link_21GES最新动态:cid:link_17AI训练营图数据库系列 作者:Ray博士第一讲第二讲第三讲开发者中心-图引擎服务GES开发指南:cid:link_0GES帮助文档:cid:link_9GES算法API参数参考:cid:link_11
-
↵首先,我们通过一个有趣的栗子来认识什么是镜像。假如我来到一片空地,想要建一座房子,那么我需要砍木头、搬石头、画图纸等等,一顿忙活后,房子终于盖好了。这时,我发现地址选的不好,想迁到另外一处。按照之前的方法,我必须重新砍木头、搬石头、画图纸,想想都头大。我幻想拥有一种超能力,将盖好的房子复制一份,做成“镜像”,装在口袋里,等到了另一片空地,用这个“镜像”复制一座房子,拎包入住。在云计算界,镜像就是这么神奇的存在。让我们从镜像的前世开始谈起,慢慢揭开它的神秘面纱~温馨提示:本文干货较多,阅读可能需要二十分钟。镜像的前世说到镜像,不得不提起云计算业界大佬OpenStack。OpenStack是一个开源的云计算管理平台项目,旨在为公共及私有云的建设与管理提供软件,这个项目由几个主要的组件组合起来完成一些具体的工作。Glance组件负责虚拟机镜像的上传、注册、查找、编辑、删除等功能,它提供了一个REST API,允许用户查询虚拟机镜像元数据来获取实际的镜像文件。您可以将Glance提供的镜像存储在各种位置,从简单的文件系统到对象存储系统。OpenStack各组件关系及Glance所扮演的角色见图1 OpenStack各组件关系。图1 OpenStack各组件关系在OpenStack整个云环境中,如果没有虚拟机镜像,就无法在计算节点上生成虚拟机,OpenStack也就失去了它的意义,所以说镜像服务是OpenStack的一个核心服务。Glance组成Glance包括以下服务:Glance API:接受最终用户或Nova Compute对镜像的请求,诸如镜像创建、检索、存储。Glance Registry:存储、处理和检索有关镜像的元数据,元数据诸如大小、类型。Database:存储镜像的元数据,主要使用MySQL和SQLite。Store Backend:存储镜像本身,支持多种方式,包括普通的文件存储、Swift、Amazon S3等。图2 Glance组成Glance APIGlance API是系统后台运行的服务进程,对外提供REST API,响应镜像查询、检索和存储的调用。Glance API不会真正处理请求。如果是与镜像元数据相关的操作,Glance API会把请求转发给Glance Registry;如果是与镜像自身存取相关的操作,Glance API会把请求转发给该镜像的Store Backend。Glance RegistryGlance Registry是系统后台运行的服务进程,负责处理和存取镜像的元数据,例如镜像的大小、格式和名称。Glance支持多种格式的镜像,包括AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD和VMDK,下次课程将着重介绍镜像格式的相关知识,敬请期待。Database镜像的元数据会保存到Database中,使用比较广泛的是MySQL和SQLite。Store BackendGlance自己并不存储镜像,真正的镜像是存放在Backend中的。Glance支持多种Backend,包括普通的文件存储、Swift、Amazon S3等。Glance的操作方式可以通过OpenStack Web UI、命令行和OpenStack CLI三种方式操作Glance,例如镜像的增删改查。对于Glance的镜像管理命令举例如下:glance image-createglance image-deleteglance image-updateglance image-show云计算从初创时的牛刀小试,到现如今成长为一个庞大的行业和生态,各云厂商不断为其注入能量。为了提升用户的云上体验,华为云在镜像服务产品能力和生态能力方面也做了很多工作,下面将从两个方面介绍镜像服务IMS:镜像产品能力:镜像有哪些类型?IMS提供了哪些产品能力?镜像生态能力:围绕镜像衍生出了哪些产品?这些产品对用户有什么价值?镜像产品图3 产品导图镜像分类镜像是云服务器运行环境的模板,在购买云服务器时,镜像是必填项,有四个分类,分别是公共镜像、私有镜像、共享镜像和市场镜像。他们有什么区别?实际该如何选择呢?下面我们将这四种类型做个对比:镜像类型说明可用性/安全性费用公共镜像常见的标准操作系统镜像,所有用户可见,包括操作系统以及预装的公共应用。公共镜像具有高度稳定性,皆为正版授权,可放心使用。高免费市场镜像提供预装操作系统、应用环境和各类软件的优质第三方镜像。无需配置,可一键部署,满足建站、应用开发、可视化管理等个性化需求。较高免费/收费私有镜像包含操作系统或业务数据、预装的公共应用以及用户的私有应用的镜像,仅用户个人可见。中免费共享镜像用户将接受云平台其他用户共享的私有镜像,作为自己的镜像进行使用。低免费在实际选择时,有一个简单的判断原则:如果需要一个纯净版OS,则选择公共镜像如果需要一个完整的软件环境,比如Magento电子商务系统,则选择市场镜像如果希望基于当前云服务器实例复制新实例,则选择私有镜像如果想使用别人共享的镜像,则选择共享镜像镜像产品能力创建镜像流程为了满足用户多种业务场景的需求,华为云将私有镜像再次分类为:系统盘镜像、数据盘镜像和整机镜像,从字面即可理解这几种镜像的含义,整机镜像也叫全镜像,可以包含系统盘和数据盘。整机镜像基于差量备份制作,相比同样磁盘容量的系统盘镜像和数据盘镜像,创建效率更高。以系统盘镜像为例,图5展示了从ECS实例创建镜像的过程:从现有镜像开始,创建一个实例,自定义该实例,从该实例创建新的镜像,并最终创建新的实例。图5 系统盘镜像使用流程用途创建镜像可用于将ECS实例环境信息打包,快速复制新的ECS实例,常见于应用扩容场景。也可用于混合云部署场景,为了实现云上及线下资源同步,可以借助镜像导入导出功能。以将公有云资源同步到私有云为例,实现过程如下:i. 基于ECS制作私有镜像,可以为系统盘镜像或数据盘镜像(不建议制作整机镜像,因其不支持导出)ii. 将私有镜像导出到OBS桶iii. 下载OBS桶中的镜像文件,上传到私有云使用更多指导,请参阅“通过云服务器创建系统盘镜像”。导入镜像流程支持将本地或者其他云平台的镜像文件导入到华为云使用,依据镜像文件类型可用来创建ECS实例或EVS数据盘。包括四个步骤,详细流程如下:图6 导入镜像用途上云,将计算资源从线下迁移到云上。更多指导,请参阅“通过外部镜像文件创建系统盘镜像”。导出镜像流程图7 导出镜像用途将云上的ECS系统及软件环境复制到线下集群或私有云环境使用。更多指导,请参阅“导出镜像”。共享镜像假设Jack要将自己的镜像共享给Rose,流程如下:图8 共享镜像过程同样的镜像,又需要共享给Alice,可以通过为镜像添加共享租户实现:图9 添加共享租户Rose已经使用Jack共享的镜像完成业务部署,不再需要该镜像,可以拒绝已经接受的共享镜像:图10 拒绝已经接受的共享镜像Jack也可以单方向取消共享给其他人的镜像:图11 取消共享镜像更多指导,请参阅“共享指定镜像”。复制镜像流程区域内复制:实现加密镜像与非加密镜像的转换图12 区域内复制跨区域复制:实现镜像在不同区域间迁移图13 跨区域复制用途典型场景为系统环境多区域部署,以应对系统高可用及国际化的趋势,部署方式通常需要多区域+海外节点部署,快速实现跨区域复制ECS实例的方法之一便是通过复制镜像将一个镜像复制到多个区域,然后使用私有镜像快速创建实例。更多指导,请参阅“跨区域复制镜像”。镜像生态除了上文介绍的镜像产品能力,华为云也建立了比较完善的镜像生态体系,比如Cloud-Init开源组件、用户数据、镜像的商品管理能力。图14 镜像生态Cloud-Init是开源的云初始化工具,本质上是一系列Python脚本及组件,用来在云服务器启动时配置自定义信息。华为云公共镜像默认都已安装Cloud-Init,建议您在创建私有镜像时也进行安装。用户数据注入,是华为云提供的一种自定义实例启动行为及传入数据的功能。当您有如下需求时,可以考虑使用用户数据注入:i. 通过脚本简化实例配置ii. 通过脚本初始化系统iii. 已有脚本,在创建实例时一并上传iv. 其他可以使用脚本完成的功能举个栗子,通过以下脚本为Linux ECS实例更新系统软件包,并且开启httpd相关服务。用户数据将会在ECS启动时由Cloud-Init进行调度配置。注入成功后,您的ECS就可以使用httpd服务了。迁移服务,即华为云主机迁移服务SMS,是一种P2V/V2V迁移服务,可以帮您把x86物理服务器或者私有云、公有云平台上的虚拟机迁移到ECS上,轻松实现服务器上的应用和数据迁移到华为云。更多信息,请参阅“主机迁移服务”。镜像商品管理能力华为云支持第三方ISV上架市场镜像,市场镜像通常由具有丰富云服务器维护和配置经验的服务商提供,并且市场镜像经过服务商和华为云云市场的严格测试,可保证镜像内容的安全性。今天小课就为大家分享到这里,希望对您认识镜像有所帮助。后续课程会展开介绍镜像前世今生中的某些知识点,比如Cloud-Init和用户数据注入技术,敬请期待。