• [认证交流] 容器化改造
    容器化改造
  • [认证交流] 视频存储容器化
    一.存储容器化存储作为基础组件,直接和本地盘打交道,所以我们一个要解决的事情就是如果Kubernetes 管理本地盘。kubernetes管理本地盘通过官方提供的local-static-provisioner自动生成LocalPersistentVolume管理磁盘。LocalPersistentVolume是Kubernetes提供的一种管理本地盘的资源。5.1 使用Statefulset管理存储容器通过statefulset 管理有状态的存储服务, 为每个pod分配一个单独的磁盘可以使用volumeClaimTemplates给每个pod生成唯一的pvc,具体规则{podName},事先准备好PVC 和 PV,通过Statefulset 我们就可以把我们的存储托管到云上了。另外借助daemonset,可以把我们gateway模块部署到每一个node上面。处理云存储的请求。5.2 存储容器化的收益1)降低运维成本基于Kubernetes和statfulset获得了滚动更新,灰度更新,健康检查,快速扩容等功能,只需要一组yaml文件就可以快速搭建一个集群,相比于传统写ansible脚本部署的方式复杂度大大降低。2)降低开发运维成本由于Kubernetes把存储抽象成StorageClass PersistentVolume PersistentVolumeClaim。我们可以通过他们管理我们的存储资源,基于Kubernetes lable的过滤功能,可以实现简单的关系查询,通过PVC与PV管理存储资源,减少管理端的开发。定位问题也能通过POD信息快速定位到问题机器和问题云盘。而且接入Kubernetes生态上的prometheus后,监控告警也能快速开发。3)隔离性增强docker限制cpu memory使用,减少进程之间资源互相干扰,进一步提升资源利用率。 在做流媒体容器化过程中,各个系统 Portal 平台、中间件、ops 基础设施、监控等都做了相应的适配改造,改造后的架构矩阵如下图所示。Portal:流媒体 的 PaaS 平台入口,提供 CI/CD 能力、资源管理、自助运维、应用画像、应用授权(db 授权、支付授权、应用间授权)等功能。2.运维工具:提供应用的可观测性工具, 包括 watcher(监控和报警)、bistoury (Java 应用在线 Debug)、qtrace(tracing 系统)、loki/elk(提供实时日志/离线日志查看)。中间件:应用用到的所有中间件,mq、配置中心、分布式调度系统 qschedule、dubbo 、mysql sdk 等。3.虚拟化集群:底层的 K8s 和 OpenStack 集群。4.Noah:测试环境管理平台,支持应用 KVM/容器混合部署。一.CI/CD 流程改造 主要改造点:应用画像: 把应用相关的运行时配置、白名单配置、发布参数等收敛到一起,为容器发布提供统一的声明式配置。授权系统: 应用所有的授权操作都通过一个入口进行,并实现自动化的授权。K8s 多集群方案: 通过调研对比,KubeSphere 对运维优化、压测评估后也满足我们对性能的要求,最终我们选取了 KubeSphere 作为多集群方案。二.中间件适配改造改造关注点:由于容器化后,IP 经常变化是常态,所以各个公共组件和中间件要适配和接受这种变化。Qmq组件改造点:Broker端加快过期数据的处理速度。原因:由于IP变化频繁,对于一个主题有几百个甚至上千个的IP订阅,会产生很多文件Qconfig/Qschedule组件改造点:按实例级别的推送、任务执行在容器场景下不建议使用 。原因:因为IP经常变化,在容器化场景下发布、pod驱逐等都会导致IP变化,按实例维度推送没有意义Dubbo组件改造点:更改上线下线逻辑,下线记录由永久节点改为临时节点。 原因:上下线机制加上频繁的IP变更会导致zookeeper上产生大量的过期数据Openresty改造点:监听多K8s集群的endpoint变更,并更新到upstream; KVM、容器server地址共存,支持KVM和容器混合部署;三应用平滑迁移方案设计为了帮助业务快速平滑地迁移到容器,制定了一些规范和自动化测试验证等操作来实现这个目标。1.容器化的前置条件: 应用无状态、不存在 post_offline hook(服务下线后执行的脚本)、check_url 中不存在预热操作。2.测试环境验证: 自动升级 SDK、自动迁移。我们会在编译阶段帮助业务自动升级和更改 pom 文件来完成 SDK 的升级,并在测试环境部署和验证,如果升级失败会通知用户并提示。3.线上验证: 第一步线上发布,但不接线上流量,然后通过自动化测试验证,验证通过后接入线上流量。4.线上 KVM 与容器混部署:保险起见,线上的容器和 KVM 会同时在线一段时间,等验证期过后再逐步下线 KVM。5.线上全量发布: 确认服务没问题后,下线 KVM。6.观察: 观察一段时间,如果没有问题则回收 KVM。
  • [计算] 容器(图)
     Service 有三种类型:ClusterIP,NodePort 和 LoadBalancerClusterIP 类型:只能在内部互访,集群内部,都可以通过 ClusterIP 访问,Service 的域名解析得到 IP 也是ClusterIP。NodePort 类型:是在 ClusterIP 之上增加了一层 VM IP+VM Port 的映射路由(iptables),暴露给集群之外,和 VM 位于同一个网段或者网络直通的节点访问。LoadBalancer 类型:当访问用户位于的外部网络和 容器平台所在网络隔离,必须通过交换机设备或者负载均衡等设备才能访问内部网络的情况下使用。平台需要对接负载均衡设备(比如ELB),将内部访问地址注册给设备,实现路由访问通道。(1)CCE内分为两个工作负载,Web负载和数据库负载,位与同一个VPC内(2)数据库集群与WEB集群间使用clusterip方式访问(3)WEB集群和外网的service通过 LB方式访问
  • [综合] 云业务知识整理
    知识点一 裸金属的优势,然后怎么给高性能计算需求客户推荐上云裸金属:为用户提供专属的物理服务器,提供卓越的计算性能,满足核心应用场景对高性能及稳定性的需求,结合了传统托管服务器带来的稳定性能与云中资源高度弹性的优势。安全可靠裸金属服务器是用户专属的计算资源,支持VPC、安全组隔离;支持主机安全相关组件集成;基于擎天架构的裸金属服务器支持云磁盘作为系统盘和数据盘,支持硬盘备份恢复能力;支持对接专属存储,满足企业数据安全和监管的业务安全和可靠性诉求。性能卓越裸金属服务器继承物理服务器特征,无虚拟化开销和性能损失,100%释放算力资源。结合华为自研擎天软硬协同架构,支持高带宽、低时延云存储、云网络访问性能;满足企业数据库、大数据、容器、HPC、AI等关键业务部署密度和性能诉求。敏捷的部署效率裸金属服务器基于擎天加速硬件支持云磁盘作为系统盘快速发放;分钟级资源发放,基于统一console控制台、开放API和SDK,支持自助式资源生命周期管理和运维。云服务和解决方案快速集成裸金属服务器基于统一的VPC模型,支持公有云云服务的快速集成;帮助企业客户实现数据库、大数据、容器、HPC、AI等关键业务云化解决方案集成和加速业务云化上线效率。推荐高性能客户上云:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;如果客户特殊异构计算的性能需求,可以推进GPU、AI、HPC、FGPA等异构计算服务若客户高性能业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;知识点二 云原生/考容器/虚拟化的联系及区别,CI/CD Devops/微服务关系云原生:在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势,随着云化技术的不断发展,云原生的概念也应运而生。容器和虚拟化的区别:区别:1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自于公共HUB、私有、社区4、容器引擎安装镜像---运行实例5、容器无需安装OS+无需作任何配置对比:占用空间:容器-MB级别,虚拟化-GB级;运行速度:容器:秒级、虚拟化:分钟级;安全隔离性:容器隔离性不如计算虚拟化(因为共享OS);创建数量:容器无上限,计算虚拟化(受限于虚拟化软件)CI/CD Devops/微服务关系CI/CD:持续开发、交付、部署、扩容/快速反馈,响应业务需求DevOPs:开发、测试、交付、运维一体,微服务的最佳组织阵型微服务:独立开发、发布、交付、部署容器及其编排:敏捷的基础设施、按需急用、微服务最佳载体知识点三 然后根据题目画容器业务vpc子网拓扑图(1)CCE内分为两个工作负载,Web负载和数据库负载,位与同一个VPC内(2)数据库集群与WEB集群间使用clusterip方式访问(3)WEB集群和外网的service通过 LB方式访问知识点四 lamp数据库和应用都分别用主机部署,请问用什么规格的存储,并说明原因(应用服务器数据存储200g,文件数据增长快)具体考的时候,如果你真的抽到这个题目,要看清楚题干对吧,题干上面应该会说这个应用数据库,它的读写环境有没有要求什么的,要具体要结合题目。如果仅基于现有的信息:1、Apache服务器:WEB应用程序的服务器, 当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;2、当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源并由web服务器返回到客户端。对于应用服务器,由于文件数据增长快,建议还是选用云硬盘,可以选用高性能。知识点五 Vpc及业务管理双平面虚拟私有云VPC每个虚拟私有云VPC由一个私网网段、路由表和至少一个子网组成。(1)私网网段:用户在创建虚拟私有云VPC时,需要指定虚拟私有云VPC使用的私网网段。当前虚拟私有云VPC支持的网段有10.0.0.0/8~24、172.16.0.0/12~24和192.168.0.0/16~24。(2)子网:云资源(例如云服务器、云数据库等)必须部署在子网内。所以虚拟私有云VPC创建完成后,需要为虚拟私有云VPC划分一个或多个子网,子网网段必须在私网网段内。(3)路由表:在创建虚拟私有云VPC时,系统会自动生成默认路由表,默认路由表的作用是保证了同一个虚拟私有云VPC下的所有子网互通。当默认路由表中的路由策略无法满足应用(比如未绑定弹性公网IP的云服务器需要访问外网)时,可以通过创建自定义路由表来解决。业务管理双平面 知识点六 ACL、SG出入策略ACL、SG出入策略网络ACL与安全组类似,都是安全防护策略,当您想增加额外的安全防护层时,就可以启用网络ACL。安全组对云服务器、云容器、云数据库等实例进行防护,网络ACL对子网进行防护,两者结合起来,可以实现更精细、更复杂的安全访问控制。 安全组SG安全组是一个逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当实例加入该安全组后,即受到这些访问规则的保护。系统会为每个用户默认创建一个默认安全组,默认安全组的规则是在出方向上的数据报文全部放行,入方向访问受限,安全组内的实例无需添加规则即可互相访问。默认安全组可以直接使用,也可以根据需要创建自定义的安全组。安全组创建后,您可以在安全组中设置出方向、入方向规则,这些规则会对安全组内部的实例出入方向网络流量进行访问控制,当实例加入该安全组后,即受到这些访问规则的保护。安全组规则包括如下组成部分:来源:源数据(入方向)或目标数据(出方向)的IP。协议类型和协议端口:包括协议类型和协议端口,协议类型如TCP、UDP、HTTP等。源地址:可以是IP地址、安全组、IP地址组。类型:IP地址类型。开通IPv6功能后可见。描述:安全组规则的描述信息。访问控制ACL网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的数据流。每个网络ACL都包含一组默认规则,如下所示:默认放通同一子网内的流量。默认放通目的IP地址为255.255.255.255/32的广播报文。用于配置主机的启动信息。默认放通目的网段为224.0.0.0/24的组播报文。供路由协议使用。默认放通目的IP地址为169.254.169.254/32,TCP端口为80的metadata报文。用于获取元数据。默认放通公共服务预留网段资源的报文,例如目的网段为100.125.0.0/16的报文。除上述默认放通的流量外,其余出入子网的流量全部拒绝,网络ACL规则的优先级使用“优先级”值来表示,优先级的值越小,优先级越高,最先应用。优先级的值为“*”的是默认规则,优先级最低。多个网络ACL规则冲突,优先级高的规则生效,优先级低的不生效。若某个规则需要优先或落后生效,可在对应规则(需要优先或落后于某个规则生效的规则)前面或后面插入此规则。通过网络ACL添加拒绝规则,可以拒绝恶意IP、恶意协议、恶意端口的访问;通过网络ACL设置子网间的访问规则,可以对子网间访问进行限制;网络ACL支持规则编排,可以把访问频繁的规则置顶,提高性能。知识点七 云原生的通俗解释+画图示意微服务 CICD devops 容器化的关系+四个各自的功能作用Pivotal 最新官网对云原生概括为 4 个要点:DevOps+持续交付+微服务+容器。符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps 支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。微服务   应用间通过RESTFUL API通信 DEVOPS  自动化发布管道、CI工具云原生   快速部署到生产环境开发、运维协同工作CI/CD    持续交付  频繁发布、快速交付、快速反馈、降低发布风险容器化    微服务的载体微服务功能微服务 :1、按照业务来划分服务,单个服务代码量小,业务单一,易于维护2、每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中3、微服务之间的通信是通过HTTP 协议或者消息组件,且具有容错能力4、微服务有一套服务治理的解决方案,服务之间不相合,可以随时加入和剔除服务5、单个微服务能够集群化部署,并且有负载均衡的能力6、整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等7、整个微服务系统有链路追踪的能力8、有一套完整的实时日志系统微服务具备功能:1、服务的注册和发现2、服务的负载均衡3、服务的容错4、服务网关5、服务配置的统一管理6、链路追踪7、实时日志CICD:CICD实现了从代码开发、代码编译、部署、测试、发布上线自动化的一套自动化构建的流程;CI即持续集成(Continuous Integration),它实现代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果进行反馈。CD包含两个含义:持续交付(Continuous Delivery),它实现部署到生产环境,给用户进行使用持续部署(Continuous Deployment),它实现部署到生产环境 devops :DevOps 就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠容器化:容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。知识点八、一个算存储容量的题,oceanstore ,4台存储(每台12块,一块冷备,做raid5),加一个级联的存储机框(24块盘,不做raid),问一共多少容量。4*10*单盘+24*单知识点九、核数:2*16=32核 内存:8*16g=128g 2、核数:2*16*0.25=8核(0.25平均负载)       2*16*0.85=27.2(峰值负载0.85,可取32) 内存:8*16*0.68=87.04G(可取96g) 存储空间:系统盘未知, 数据库盘:8*500g*0.5(raid10利用率)=2000G 要求:1、cpu平均利用率小于50%,2内存利用率小于70%,3无特别说明按照1:1选型,4保证峰值压力。 怎么计算选型?32核/128G /2000GB知识点九 24块盘,2块保险盘不存数据,一块高热盘、一块低热盘,分两组做了raid5,可用容量:24T实际容量:20T (高热做校验,低热做冗余)容量使用率:20/24可用硬盘数:20知识点十 视频点播,直播分别是两个不同的域名,绑定的同一个ip,华为云什么服务可以实现该功能,并简要说明步骤ELB+CDN知识点十一 华为云服务有哪些特性可以保证高性能和高可靠(数据库)数据库本身特性服务高可用:可用区内部主备、跨可用区主备数据高可靠:在线存储数据可靠性9个9、备份存储数据可靠性11个9数据高安全:(1)连接安全:VPC、子网、安全组、VPN、SSL(2)安全管理:管控平台严格做到不碰用户业务数据(3)数据加密:储存数据加密,秘钥严格管理用分布式数据库中间件DDM1、用分布式数据库中间件(DDM):分布式关系型数据库,兼容Mysql协议,采用存储计算分离架构的模式,使得存储、计算层可以无限扩展,从而拥有海量数据高并发访问能力。2、DDM部署过程基本架构就是DDM下挂多个Mysql实例,包括只读实例和写实例:步骤一:购买数据库中间件实例及RDS for MySQL实例步骤二:创建逻辑库并关联RDS for MySQL实例步骤三:创建DDM帐号步骤四:连接DDM逻辑库读写分离、采用高可用部署读写分离,主备版部署或集群版部署(一主一备五只读)四、数据多样化存储关系型数据库支持与分布式缓存服务Redis、Memcached对象存储服务等产品搭配使用,基于双机热备的高可用架构,提供单机、主从、集群等丰富类型的缓存类型,满足用户高并发及数据快速访问的业务需求。12. 怎么创建私有镜像?怎么通过私有镜像配置挂到obs挂载给云主机?(吴琦)13、24盘,分两组raid5,问可用空间,目前有多少块盘没有被用14、目的数据库oracle但是不用rds,采用哪种模式15、计算模式下应用了哪些服务知识点十六、私有镜像创建zhxx-app.vmdk和zhxx-db.vmdk是否都能导入华为云镜像的方式部署?对于Vmware镜像文件.vmdk部署为华为云的弹性云服务器ECS,其流程主要步骤有哪些?华为云支持导入vhd、vmdk、qcow2、raw、vhdx、qcow、vdi、qed、zvhd或zvhd2格式镜像文件。使用公有云镜像服务,步骤如下: 准备符合平台要求的外部镜像文件。 上传外部镜像文件到OBS个人桶中。 通过管理控制台选择上传的镜像文件,并将镜像文件注册为私有镜像。 私有镜像注册成功后,使用该镜像创建新的云服务器。知识点十八 网络ACL、SG策略规划 业务系统网段VPC与其他VPC互通关系ACL、SG策略办公系统192.168.10.0/24SG:入向、端口:443,源IP段0.0.0.0/0教务系统192.168.20.0/24与知识点十九 视频、流媒体容器化由于视频业务客户负载变化难以预测,需要根据CPU/内存使用率进行实时扩缩容。可以利用CCE容器引擎,来实现弹性伸缩应用。 知识点二十 外网内网负载均衡(web服务器、应用服务器、数据库)知识点二十一 使用容器引擎客户端上传镜像开始——安装容器引擎——构建镜像——创建组织——连接容器镜像服务——上传镜像——结束
  • [应用服务] 容器vs虚拟化
    容器与虚拟机本质上都属于虚拟化技术,所不同的是两者所在层级不同,容器在操作系统之上,与虚拟机相比少了操作系统,不同容器之间能共享操作系统,因此更轻量,启动更快,效率更好。也正因为如此,与虚拟机相比容器的隔离性要差,安全性不如虚拟机。另一方面,虚拟机应用得更普及,相关工具也更为成熟和完善。区别:1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自公共、私有、社区HUB4、容器引擎直接安装镜像---运行实例5、容器无需安装OS、无需做任何配置容器和虚拟机的优势对比1、容器占用空间是MB级别,虚拟机是GB级别2、容器的运行速度是秒级,虚拟机是分钟级3、容器的安全性不如计算虚拟化4、容器创建数量无上限,虚拟机受限于hypervisior容器具有打包、分发、运行标准化,更高效地利用系统资源,更快速的启动时间,一致的运行环境,支撑持续集成持续部署,更轻松的多云迁移等优势,容器将依赖环境一起打包,因而屏蔽了开发、测试和运行环境的差异,再加上秒启、可多开的特性,使得微服务和DevOps均得以实现。所以可以说,容器技术是云原生的最佳载体,成为云原生的基石。cicd devops还有微服务关系cicd:持续开发、交付、部署、扩容/快速反馈,响应业务需求DevOPs:开发、测试、交付、运维一体,微服务的最佳组织阵型微服务:独立开发、发布、交付、部署容器及其编排:敏捷的基础设施、按需急用、微服务最佳载体微服务功能微服务 :1、按照业务来划分服务,单个服务代码量小,业务单一,易于维护2、每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中3、微服务之间的通信是通过HTTP 协议或者消息组件,且具有容错能力4、微服务有一套服务治理的解决方案,服务之间不相合,可以随时加入和剔除服务5、单个微服务能够集群化部署,并且有负载均衡的能力6、整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等7、整个微服务系统有链路追踪的能力8、有一套完整的实时日志系统微服务具备功能:1、服务的注册和发现2、服务的负载均衡3、服务的容错4、服务网关5、服务配置的统一管理6、链路追踪7、实时日志CICD:CICD实现了从代码开发、代码编译、部署、测试、发布上线自动化的一套自动化构建的流程;CI即持续集成(Continuous Integration),它实现代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果进行反馈。CD包含两个含义:持续交付(Continuous Delivery),它实现部署到生产环境,给用户进行使用持续部署(Continuous Deployment),它实现部署到生产环境devops :DevOps 就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠容器化:容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。
  • [技术干货] 容器化上云参考
    1:负载均衡应用改造点:选择合适的负载均衡器中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务较小,选取nginx作为负载均衡器!2:web应用改造点:应用存在长时间执行请求   增加消息队列,通过消息队列将长任务与用户请求解耦3:应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据如果是日志,建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS。4:资源及集群规划规划:目前采用单集群规划,云资源中有其他应用项目请画出简要的资源规划图: 5:高可用规划   结合华为云,给出高可用规划的简单说明:    分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署;应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例;应用通过VIP访问数据库,数据库自动切换应用不感知。支持多AZ动态容器存储,根据pod所在AZ创建数据卷。6:网络规划:集群内部应用默认可通过ClusterIP类型服务相互通信。k8s集群内置DNS服务,服务间访问可以通过IP或域名访问,请画出K8S集群内部应用网络互通示意图: Step1:kube-proxy、core-dns从Master中kube-apiserver订阅service,POD2的Service创建时,kube-proxy刷新本节点iptables,core-DNS更新路由数据。Step2:Pod2通过域名访问Pod4的service4,发起到core-dns查询请求,并获取对应的ClusterIP(如果使用ClusterIP直接访问则忽略这一步骤)Step3:Pod2发送业务报文,目的地址为获取到的ClusterIP。容器网络根据目的地址匹配策略后进行VxLAN封装,封装源地址为容器所在的VM IP地址,目的地址为目的容器所在VM IP,并将报文发给I层vSwitch,然后转发至目的容器所在VM,容器网络解VxLAN封装后,根据ClusterIP将业务报文发送目的service及POD。  
  • [大咖交流] 视频存储容器化
    一.存储容器化存储作为基础组件,直接和本地盘打交道,所以我们一个要解决的事情就是如果Kubernetes 管理本地盘。kubernetes管理本地盘通过官方提供的local-static-provisioner自动生成LocalPersistentVolume管理磁盘。LocalPersistentVolume是Kubernetes提供的一种管理本地盘的资源。5.1 使用Statefulset管理存储容器通过statefulset 管理有状态的存储服务, 为每个pod分配一个单独的磁盘可以使用volumeClaimTemplates给每个pod生成唯一的pvc,具体规则{podName},事先准备好PVC 和 PV,通过Statefulset 我们就可以把我们的存储托管到云上了。另外借助daemonset,可以把我们gateway模块部署到每一个node上面。处理云存储的请求。5.2 存储容器化的收益1)降低运维成本基于Kubernetes和statfulset获得了滚动更新,灰度更新,健康检查,快速扩容等功能,只需要一组yaml文件就可以快速搭建一个集群,相比于传统写ansible脚本部署的方式复杂度大大降低。2)降低开发运维成本由于Kubernetes把存储抽象成StorageClass PersistentVolume PersistentVolumeClaim。我们可以通过他们管理我们的存储资源,基于Kubernetes lable的过滤功能,可以实现简单的关系查询,通过PVC与PV管理存储资源,减少管理端的开发。定位问题也能通过POD信息快速定位到问题机器和问题云盘。而且接入Kubernetes生态上的prometheus后,监控告警也能快速开发。3)隔离性增强docker限制cpu memory使用,减少进程之间资源互相干扰,进一步提升资源利用率。在做流媒体容器化过程中,各个系统 Portal 平台、中间件、ops 基础设施、监控等都做了相应的适配改造,改造后的架构矩阵如下图所示。1. Portal:流媒体 的 PaaS 平台入口,提供 CI/CD 能力、资源管理、自助运维、应用画像、应用授权(db 授权、支付授权、应用间授权)等功能。2.运维工具:提供应用的可观测性工具, 包括 watcher(监控和报警)、bistoury (Java 应用在线 Debug)、qtrace(tracing 系统)、loki/elk(提供实时日志/离线日志查看)。中间件:应用用到的所有中间件,mq、配置中心、分布式调度系统 qschedule、dubbo 、mysql sdk 等。3.虚拟化集群:底层的 K8s 和 OpenStack 集群。4.Noah:测试环境管理平台,支持应用 KVM/容器混合部署。一.CI/CD 流程改造主要改造点:应用画像: 把应用相关的运行时配置、白名单配置、发布参数等收敛到一起,为容器发布提供统一的声明式配置。授权系统: 应用所有的授权操作都通过一个入口进行,并实现自动化的授权。K8s 多集群方案: 通过调研对比,KubeSphere 对运维优化、压测评估后也满足我们对性能的要求,最终我们选取了 KubeSphere 作为多集群方案。二.中间件适配改造改造关注点:由于容器化后,IP 经常变化是常态,所以各个公共组件和中间件要适配和接受这种变化。Qmq组件改造点:Broker端加快过期数据的处理速度。原因:由于IP变化频繁,对于一个主题有几百个甚至上千个的IP订阅,会产生很多文件Qconfig/Qschedule组件改造点:按实例级别的推送、任务执行在容器场景下不建议使用 。原因:因为IP经常变化,在容器化场景下发布、pod驱逐等都会导致IP变化,按实例维度推送没有意义Dubbo组件改造点:更改上线下线逻辑,下线记录由永久节点改为临时节点。 原因:上下线机制加上频繁的IP变更会导致zookeeper上产生大量的过期数据Openresty改造点:监听多K8s集群的endpoint变更,并更新到upstream; KVM、容器server地址共存,支持KVM和容器混合部署;三应用平滑迁移方案设计为了帮助业务快速平滑地迁移到容器,制定了一些规范和自动化测试验证等操作来实现这个目标。1.容器化的前置条件: 应用无状态、不存在 post_offline hook(服务下线后执行的脚本)、check_url 中不存在预热操作。2.测试环境验证: 自动升级 SDK、自动迁移。我们会在编译阶段帮助业务自动升级和更改 pom 文件来完成 SDK 的升级,并在测试环境部署和验证,如果升级失败会通知用户并提示。3.线上验证: 第一步线上发布,但不接线上流量,然后通过自动化测试验证,验证通过后接入线上流量。4.线上 KVM 与容器混部署:保险起见,线上的容器和 KVM 会同时在线一段时间,等验证期过后再逐步下线 KVM。5.线上全量发布: 确认服务没问题后,下线 KVM。6.观察: 观察一段时间,如果没有问题则回收 KVM。
  • [大咖交流] 什么业务适合做容器化
    1.轻量级的应用系统、丢失数据不敏感业务适合上容器化平台。几类应用比较适合容器化部署:一是功能单一的应用,即微服务(这也是为什么现在大家一谈到微服务就会谈到容器,一谈到容器就会谈到微服务的原因 );二是无状态的应用,容器的一个最大的优点就是可以快速创建(秒级),对于无状态的应用,可以通过快速横向扩容来提升并发处理能力;三是变更频繁的应用,容器是基于镜像创建的,对于变更频繁的应用,只要能保证镜像在测试环境测试没有问题,那么在生产环境上线由于环境差异导致出问题的概率就会少的多;四是对于需要在一个站点快速部署的应用组,对于需要在一个新站点快速部署的应用组,使用容器技术能够结合容器平台自身的特性,快速创建一个新的站点。2.重量级的中间件、oracle数据库、对数据持久化有强需求的应用、传统行业核心应用不适合容器化。使用容器部署应用,建议的上容器顺序如图所示:
  • [大咖交流] 企业容器化改造方案
    X企业容器化改造方案 【背景】A企业是一家位于杭州的软件开发公司,具备自主设计软件,交付软件及销售的能力,目前公司业务已经上华为云,考虑到开发及交付的便利性,准备进行容器化改,目标是能够实现软件开发即交付。业务现网状况如下:目前2台web服务器作为前端,mysql数据库,软件负载均衡器,无数据库中间件,后端EVS云硬盘,针对于本企业的现状,给出各部分的容器化改造及后续方案. 1:负载均衡应用改造点:选择合适的负载均衡器中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务较小,选取nginx作为负载均衡器!2:web应用改造点:应用存在长时间执行请求   增加消息队列,通过消息队列将长任务与用户请求解耦3:应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据如果是日志,建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS4:资源及集群规划规划:目前采用单集群规划,云资源中有其他应用项目请画出简要的资源规划图: 5:高可用规划   结合华为云,给出高可用规划的简单说明:    分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署;应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例;应用通过VIP访问数据库,数据库自动切换应用不感知。支持多AZ动态容器存储,根据pod所在AZ创建数据卷。6:网络规划:集群内部应用默认可通过ClusterIP类型服务相互通信。k8s集群内置DNS服务,服务间访问可以通过IP或域名访问,请画出K8S集群内部应用网络互通示意图: Step1:kube-proxy、core-dns从Master中kube-apiserver订阅service,POD2的Service创建时,kube-proxy刷新本节点iptables,core-DNS更新路由数据。Step2:Pod2通过域名访问Pod4的service4,发起到core-dns查询请求,并获取对应的ClusterIP(如果使用ClusterIP直接访问则忽略这一步骤)Step3:Pod2发送业务报文,目的地址为获取到的ClusterIP。容器网络根据目的地址匹配策略后进行VxLAN封装,封装源地址为容器所在的VM IP地址,目的地址为目的容器所在VM IP,并将报文发给I层vSwitch,然后转发至目的容器所在VM,容器网络解VxLAN封装后,根据ClusterIP将业务报文发送目的service及POD。
  • [大咖交流] 中小企业容器化改造建议
    中小企业容器化改造建议企业应用容器化改造,一般有以下三种方式:• 方式一:单体应用整体容器化,应用代码和架构不做任何改动。• 方式二:将应用中升级频繁,或对弹性伸缩要求高的组件拆分出来,将这部分组件容器化。• 方式三:将应用做全面的微服务架构改造,再单独容器化。对于中小企业而言,首次做容器化改造,建议选择方式一,主要优点有:• 业务0修改:应用架构和代码不需要做任何改动。• 提升部署和升级效率:应用可构建为容器镜像,确保应用环境一致性,提升部署效率。• 降低资源成本:Docker对系统资源利用率高。相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。确定容器化改造方式后,企业就可以着手改造。以近期遇到的某中小企业改造为例。企业现状:该企业目前2台web服务器作为前端,mysql数据库,软件负载均衡器,无数据库中间件,后端EVS云硬盘。企业改造点:1、负载均衡应用改造点:选择合适的负载均衡器。一般中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务规模较小,选取nginx作为负载均衡器;2、web应用改造点:应用存在长时间执行请求。增加消息队列,通过消息队列将长任务与用户请求解耦。3、应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据。日志建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS。4、资源及集群规划:目前采用单集群规划(假设云资源中有其他应用项目),给出示意图如下:5、 高可用规划• 分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署。• 应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。• 应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例。• 应用通过VIP访问数据库,数据库自动切换应用不感知。• 支持多AZ动态容器存储,根据pod所在AZ创建数据卷。6、 网络规划集群内部应用默认可通过ClusterIP类型服务相互通信。k8s集群内置DNS服务,服务间访问可以通过IP或域名访问。K8S内部应用网络互通示意图如下:Step1:kube-proxy、core-dns从Master中kube-apiserver订阅service,POD2的Service创建时,kube-proxy刷新本节点iptables,core-DNS更新路由数据。Step2:Pod2通过域名访问Pod4的service4,发起到core-dns查询请求,并获取对应的ClusterIP(如果使用ClusterIP直接访问则忽略这一步骤)Step3:Pod2发送业务报文,目的地址为获取到的ClusterIP。容器网络根据目的地址匹配策略后进行VxLAN封装,封装源地址为容器所在的VM IP地址,目的地址为目的容器所在VM IP,并将报文发给I层vSwitch,然后转发至目的容器所在VM,容器网络解VxLAN封装后,根据ClusterIP将业务报文发送目的service及POD。
  • [大咖交流] 企业容器化改造方案
                         X企业容器化改造方案 【背景】A企业是一家位于杭州的软件开发公司,具备自主设计软件,交付软件及销售的能力,目前公司业务已经上华为云,考虑到开发及交付的便利性,准备进行容器化改,目标是能够实现软件开发即交付。业务现网状况如下:目前2台web服务器作为前端,mysql数据库,软件负载均衡器,无数据库中间件,后端EVS云硬盘,针对于本企业的现状,给出各部分的容器化改造及后续方案.1:负载均衡应用改造点:选择合适的负载均衡器中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务较小,选取nginx作为负载均衡器!2:web应用改造点:应用存在长时间执行请求   增加消息队列,通过消息队列将长任务与用户请求解耦3:应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据如果是日志,建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS。4:资源及集群规划规划:目前采用单集群规划,云资源中有其他应用项目请画出简要的资源规划图:5:高可用规划   结合华为云,给出高可用规划的简单说明:    分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署;应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例;应用通过VIP访问数据库,数据库自动切换应用不感知。支持多AZ动态容器存储,根据pod所在AZ创建数据卷。6:网络规划:集群内部应用默认可通过ClusterIP类型服务相互通信。k8s集群内置DNS服务,服务间访问可以通过IP或域名访问,请画出K8S集群内部应用网络互通示意图:Step1:kube-proxy、core-dns从Master中kube-apiserver订阅service,POD2的Service创建时,kube-proxy刷新本节点iptables,core-DNS更新路由数据。Step2:Pod2通过域名访问Pod4的service4,发起到core-dns查询请求,并获取对应的ClusterIP(如果使用ClusterIP直接访问则忽略这一步骤)Step3:Pod2发送业务报文,目的地址为获取到的ClusterIP。容器网络根据目的地址匹配策略后进行VxLAN封装,封装源地址为容器所在的VM IP地址,目的地址为目的容器所在VM IP,并将报文发给I层vSwitch,然后转发至目的容器所在VM,容器网络解VxLAN封装后,根据ClusterIP将业务报文发送目的service及POD。   
  • [其他问题] 在300I推理卡上启动算法容器如何指定device?
    目前有已经开发好的算法镜像,受算法中权限的限制,启动容器时需要使用特权模式,也就是docker run的时候要添加--privileged参数。当前的需求是要指定容器使用特定的device,我查阅文档的结果是使用-e ASCEND_VISIBLE_DEVICES=x,其中x是device id。我试用的结果是不使用特权模式时,此指令可以正常生效,使用特权模式的话,此指令就不生效了。由于必须要使用--privileged,那么在使用特权模式的基础上要如何指定算法容器使用某个device呢?
  • [技术干货] 用低代码实现一个简单的页面跳转功能
    # 开发者说 # 【开发者说】栏目是为HarmonyOS开发者提供的展示和分享平台,在这里,大家可以发表自己的技术洞察和见解,也可以展示自己的开发心得和成果。欢迎大家积极投稿,后台回复【投稿】,即可获得投稿渠道。期待你们的分享~本期我们给大家带来的是开发者贾佳豪的分享,希望能给你的HarmonyOS开发之旅带来启发~ 一、介绍 HUAWEI DevEco Studio(后文简称:IDE)自2020年9月首次发布以来,经10次迭代升级,不断为HarmonyOS应用开发增强能力。3月31日,IDE再度升级到DevEco Studio 3.0 Beta3版本。新版本具有一站式信息获取、多设备工程模板、实时动态双向预览、全新构建工具一键编译打包、一键式自动化签名、低代码开发等能力。其中低代码开发是IDE为开发者提供的可视化界面开发方式,具有丰富的UI界面编辑功能。开发者可自由拖拽组件、快速预览界面效果、所见即所得、有效降低时间成本和提升构建UI界面的效率。 接下来就由开发者贾佳豪为大家展示如何用低代码实现一个简单的页面跳转功能,让你一看就会,一做就对! 二、效果预览 效果图主要由两个页面组成,点击第一个页面的“一键入门”按钮即可跳转到第二个页面,再点击第二个页面的“返回”按钮即可返回到第一个页面。下面让我们跟随贾佳豪的开发指导,一起动手尝试一下吧。三、开发过程 1. 安装DevEco Studio 根据HarmonyOS应用开发官网文档安装DevEco Studio 3.0 Beta3 for OpenHarmony。 DevEco Studio 3.0 Beta3 for OpenHarmony地址: https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta_openharmony2. 创建新工程工具下载完成后,我们就可以开始创建支持低代码开发的新工程了,操作如下:(1) 打开DevEco Studio创建一个新工程 (File > New >Create Project) 。(2) 在工程模板选择Empty Ability,然后点击Next进行下一步。(3) 填写工程配置信息,打开Enable Super Visual开关,UI Syntax选择JS,其余配置保持默认即可。(4) 最后在工程配置信息界面,点Finish,工程的创建就完成啦。新工程创建完成后,我们再了解一下低代码工程目录中的index.js和index.visual文件。index.js是低代码页面的逻辑描述文件(如红框所示),它定义了页面里所用到的所有的逻辑关系,比如数据、事件等,后文预览中实现页面跳转就是在此文件中定义。 注:使用低代码页面开发时,其关联js文件的同级目录中不能包含hml和css页面,否则出现编译错误。index.visual是存储低代码页面的数据模型文件(如蓝框所示),双击该文件即可打开低代码页面,进行可视化开发设计。如果创建了多个低代码页面,则pages目录下会生成多个页面文件夹及对应的js或visual文件(如黄框所示),后文的“开发第二个页面”部分将会具体介绍。了解完index.js和index.visual文件,下面我们正式进入低代码开发。3. 开发第一个页面我们先开发第一个页面,第一个页面是在容器中展示“低代码入门”文本和“一键入门”按钮,它们分别可以通过Div、Text、和Button组件来实现。下面一起跟随开发步骤完成第一个页面的开发。步骤1:删除画布原有模板组件。新工程创建完成后,第一个页面会默认显示文本(Hello World) ,它是由容器组件和文本组件构成的,可以直接使用,但为了让大家清晰地看到每个组件的使用方法,我们打开index.visual文件,选中画布中的组件,单击鼠标右键,选择Delete删除画布原有模板组件,从零开始。步骤2:添加Div容器组件:删除画布原有模板组件后,我们重新给画布添加Div容器,并设置Div容器的样式和属性。(1) 选中UI Control中的Div组件,将其拖至画布。(2) 点击右侧属性样式栏中的样式图标(General),设置Div组件的高度Height为100%,使其占满屏幕。(3) 点击右侧属性样式栏中的样式图标(Flex),设置Div组件的FlexDirection样式为column,使Div的主轴垂直;设置Div组件的JustifyContent样式为center,使得其子组件在主轴上居中显示;设置Div组件的Alignltems样式为center,使得其子组件在交叉轴上居中显示。步骤3:添加Text文本组件:接下来我们在Div容器中加入text组件,以便添加文本。(1)选中UI Control中的Text组件,将其拖至Div组件的中央区域。(2) 点击右侧属性样式栏中的属性图标(Properties),设置Text组件的Content属性为“低代码入门” 。(3) 点击右侧属性样式栏中的样式图标( Feature),设置组件的FontSize样式为60px, 使得其文字放大;设置组件的TextAlign样式为center,使得组件文字居中显示。(4) 再选中画布上的Text组件,拖动放大。步骤4:添加Button按钮组件:接下来我们在文本下面添加Button组件,为页面增加一个按钮。(1) 选中UI Control中的Button组件,将其拖至Text组件下面。(2) 点击右侧属性样式栏中的属性图标(Properties),设Button组件的Value属性为"一键入门"。(3) 点击右侧属性样式栏中的样式图标 (Feature),设置组件的FontSize样式为40px,使得其文字放大;再选中画布上的Button组件,拖动放大。步骤5:查看预览效果:所有步骤完成后,打开预览器查看效果。简单几步就完成第一个页面开发,是不是超级简单?接下来让我们一起开发第二个页面。4. 开发第二个页面在开发第二个页面之前需要先创建第二个页面的second.js和second.visual文件,用于存储 第二个页面的逻辑和数据。如图10所示,右键点击pages文件夹,选择New >Visual,命名为second,单击Finish,就完成了第二个页面的second.js和second.visual文件的创建。由于第二个页面的第一个页面的开发步骤一模一样,故此处不再赘述,两个页面完成之后,那么如何实现两个页面之间的跳转呢?请继续往下看。5. 第一个页面的跳转在第一个页面中,将跳转按钮绑定onclick方法,点击按钮时,即可跳转到第二页。操作如下:(1) 首先需要在index.viusal中,给画布上的Button组件选择onclick方法。打开index.visual,选中画布上的Button组件。点击右侧属性样式栏中的事件图标(Events),鼠标点击Click事件的输入框,选择onclick方法。(2) 然后在index.js当中绑定onclick方法,并在onclick方法中写入router模块,index.js代码如下:import router from '@system.router'; export default { // 绑定onclick方法 onclick () { // 写入router模块 router.push({ uri: 'pages/second/second', // 指定要跳转的页面 }) } }完成上述两步后,即可实现从第一个页面跳转到第二个页面。6. 第二个页面的返回接下来我们看下如何从第二个页面返回到第一个页面,和上一个跳转类似,在第二个页面中,返回按钮绑定back方法,点击按钮时,即可返回到第一页。操作如下:(1) 首先打开second.visual,选中画布上的Button组件,点击右侧属性样式栏中的事件图标(Events),点击Click事件的输入框,选择back。(2) 然后在second.js中绑定back方法,并在back方法中写入router模块,second.js 代码如下:import router from '@system.router'; export default { // 绑定back方法 back(){ // 写入router模块 router.back() } }7. 查看最终效果至此,我们的两个页面已经开发好,页面跳转也已经设置好,接下来就可以点击预览器查看最终效果啦。四、结语 以上就是使用低代码实现一个简单的页面跳转功能的全部介绍啦,感兴趣的小伙伴赶紧动手尝试一下吧,期待大家用低代码开发出更多精彩、有趣的应用。 转载于HarmonyOS开发者微信公众号
  • [新手课堂] 资讯|华为云AOM发布2.0版本,3大特性亮相
    AOM作为华为云面向租户的统一运维门户,将在7月1日重磅发布2.0版本。华为云PaaS服务产品部部长徐峰特别提到:“ 这次改版经历了整整一年的时间打磨,经受了华为终端云上亿用户的高强度考验,是一套领先的高效自动化运维系统。它将包含三个核心能力:云上CMDB、可观测性分析和自动化运维。应用与资源管理(CMDB)AOM2.0提供以应用为中心的CMDB,实现多层级应用、子应用、组件到环境的模型管理,建立应用与云资源依赖关系。通过CMDB,用户可以找到应用与下级微服务,以及部署在不同环境(开发环境、测试环境或生产环境等)下的资源实例,包括ECS、RDS、ELB、CCE等云服务实例。为应用监控、告警关联分析以及自动化运维提供配置数据。可观测性分析CNCF官方解释:可观测性是一种系统特征,它描述了一个系统可以从外部输出被理解的程度。计算机系统能观察到CPU时间、内存、磁盘空间、延迟、错误等指标。分析是一种活动,用户可以在这种活动中查看这些可观测到的数据并进行理解。为了确保业务正常运行,您需要观察和分析应用程序的每个方面,以便立即检测和解决异常。可观测性分析相比传统监控,增加了异常诊断和关联分析等能力,因此可观测性分析依赖Metric、Log和Trace三类数据源。 AOM2.0结合了华为云云监控、云日志和应用性能管理服务实现运维统一监控、告警和分析等活动。同时为满足用户多样化的运维诉求,AOM2.0引入“应用”和“容器”运维双视角。 应用视角 面向传统IDC运维场景,企业拥有大量的应用和依赖的资源。用户调研期间反馈在云化场景下,希望提供以应用为中心可观测性分析能力,多层次多维度关联分析。AOM2.0结合CMDB,做到应用、组件和基础设施等资源分层监控、日志分析和调用追踪。 容器视角为迎合Kubernetes容器场景下的用户使用习惯。结合华为云容器引擎CCE,实现容器运维开箱即用。用户可以了解Cluster、Deployment、Node、Container和POD等状态以及可观测性数据(Metric/Log/Trace)一站式分析体验。支持原生Promethues指标对接,兼容PromQL查询语法和Grafana集成。统一监控大盘将指标、日志和性能数据源呈现在一张屏,实现业务、应用和基础设施层立体监控。 业务层。可将ELB负载均衡日志通过LTS接入至AOM中,提取业务接口访问状态、性能指标、用户地理分布和用户访问吞吐等指标。应用层。通过非侵入式探针采集微服务的错误、吞吐和时延黄金指标,或集成原生Prometheus中deployment、cluster丰富的指标数据。基础设施层。AOM无缝集成云监控CES,将云服务DCS、RDS等云服务指标自动化运维AOM2.0基于Serverless架构,提供多种开箱即用的自动化变更场景模板,包括批量脚本作业、文件管理、定期清理磁盘、业务空闲时释放ECS等。 转自华为开发者社区
  • [技术干货] 昇腾论坛六月问题解决汇总贴
    1.Atlas500 sftp默认文件夹能否修改,要如何操作https://bbs.huaweicloud.com/forum/thread-188649-1-1.html【功能模块】Atlas500 sftp默认文件夹能否修改,要如何操作【操作步骤&问题现象】1、需要利用sftp持续上传文件至Atlas500,默认文件夹/tmp 3.9G空间不够,sftp根目录可否修改为硬盘挂载的目录2、Xshell进入小站系统后,要如何配置【截图信息】2.【公有云ECS产品】【AI加速型功能】在华为公有云上是否可以开出相应的ECS服务器?(X86版,加Atlas300)https://bbs.huaweicloud.com/forum/thread-188709-1-1.html【功能模块】【操作步骤&问题现象】在华为公有云上是否可以开出相应的ECS服务器?(X86版,加Atlas300)【截图信息】加速卡Ascend310是否包括了Atlas300?3.V900也需要使用aclrtMemcpy申请内存吗?https://bbs.huaweicloud.com/forum/thread-188808-1-1.html根据文档https://www.hiascend.com/document/detail/zh/canncommercial/51RC1/openform/devgopen/aclcppdevg_03_0070.html,310 710等昇腾处理器需要调用aclrtMemcpy申请内存。我现在用V900处理器,如果调用aclrtMemcpy申请内存,那么模型会给出正确的结果。如果使用malloc申请内存,把数据从原内存拷贝到新申请的内存,模型每次运行结果不一样,但是大体上是正确的。如果直接调用原内存,模型则给出完全错误的结果,这是为什么呢?请教一下,谢谢。4.【ascend中的sample报错】error: 'CV_IMWRITE_JPEG_QUALITY'https://bbs.huaweicloud.com/forum/thread-188828-1-1.html【功能模块】运行ascend中的gitee中的samples中demo报错,链接为:https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video【操作步骤&问题现象】1、下载sample代码2、cd ${HOME}/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video/scripts   bash sample_build.sh【截图信息】【日志信息】(可选,上传日志内容或者附件)/usr/local/Ascend/ascend-toolkit/latest/acllib/include/acl/acl_base.h:279:30: note: declared here ACL_FUNC_VISIBILITY uint32_t aclGetDataBufferSize(const aclDataBuffer *dataBuffer);                              ^~~~~~~~~~~~~~~~~~~~/home/lai/MindStudio-WorkSpace/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video/src/classify_process.cpp: In member function ‘void ClassifyProcess::EncodeImage(std::vector&, cv::Mat&)’:/home/lai/MindStudio-WorkSpace/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_video/src/classify_process.cpp:271:16: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope     param[0] = CV_IMWRITE_JPEG_QUALITY;                ^~~~~~~~~~~~~~~~~~~~~~~make[2]: *** [CMakeFiles/main.dir/classify_process.cpp.o] Error 1make[1]: *** [CMakeFiles/main.dir/all] Error 2make: *** [all] Error 2[ERROR] build failed, Please check your environment!5.docker内启动程序默认使用CPUhttps://bbs.huaweicloud.com/forum/thread-189033-1-1.html功能模块】docker镜像版本ascendhub.huawei.com/public-ascendhub/ascend-tensorflow   21.0.4-centos7.6【操作步骤&问题现象】1、docker run -it -e ASCEND_VISIBLE_DEVICES=7 -p 8131:8131 611736c0c2c3 /bin/bash2、启动容器后在容器内使用tf自动迁移工具迁移后,运行程序默认CPU启动 npu-smi info 容器内可以查看到npu信息 但是程序不能使用npu在容器外会使用npu6.docker内启动程序默认使用CPUhttps://bbs.huaweicloud.com/forum/thread-189060-1-1.html【功能模块】docker镜像版本ascendhub.huawei.com/public-ascendhub/ascend-tensorflow   21.0.4-centos7.6设备版本A910【操作步骤&问题现象】1、docker run -it -e ASCEND_VISIBLE_DEVICES=7 -p 8131:8131 611736c0c2c3 /bin/bash2、启动容器后在容器内使用tf自动迁移工具迁移后,运行程序默认CPU启动 npu-smi info 容器内可以查看到npu信息 但是程序不能使用npu在容器外会使用npu7.【Atlas310】【Ascend-Pytorch官方镜像】模型推理过程中一直报 内存错误https://bbs.huaweicloud.com/forum/thread-189264-1-1.html【功能模块】原项目中使用的模型是YoloV5,运行环境为官方提供的pytorch1.5镜像,已针对Pytorch版本对模型进行了修改,可以正常加载。但是在推理过程中一直报错,为了排查错误,建立了一个简单的CNN+FC的模型进行测试,代码如下:import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.autograd import Variableclass Net(nn.Module):    def __init__(self):        super(Net, self).__init__()        self.conv1 = nn.Conv2d(1,6,3,padding=1)        self.conv2 = nn.Conv2d(6, 16, 3, padding=1)        self.fc1 = nn.Linear(16*8*8, 120)        self.fc2 = nn.Linear(120, 84)        self.fc3 = nn.Linear(84, 10)    def forward(self, x):        x = F.max_pool2d(F.relu(self.conv1(x)),2)        x = F.max_pool2d(F.relu(self.conv2(x)),2)        x = x.view(-1, self.num_flat_features(x))        x = F.relu(self.fc1(x))        x = F.relu(self.fc2(x))        x = self.fc3(x)        return x    def num_flat_features(self, x):        size = x.size()[1:]        num_features = 1        for s in size:            num_features *= s        return num_featuresif __name__=="__main__":    device = torch.device("npu:0")    net = Net()    net.to(device)    x = torch.randn(4, 1, 32, 32).to(device)    print("begin")    y = net(x)    print(y)    【操作步骤&问题现象】1、在CPU上可正常运行并输出结果2、按照上述代码在npu上运行时就会报错,与项目代码报错内容相同。不知道问题出在哪里。root@ff-hw-01:/tmp# python npu_test.py beginSegmentation fault (core dumped)root@ff-hw-01:/tmp# /usr/lib/python3.7/multiprocessing/semaphore_tracker.py:144: UserWarning: semaphore_tracker: There appear to be 91 leaked semaphores to clean up at shutdown  len(cache))8.pytorch单机多卡报hccl errorhttps://bbs.huaweicloud.com/forum/thread-189338-1-1.htmlAscend-cann-toolkit_5.1.RC2.alpha003_linux-x86_64ascend-Pytorch 1.8.1Python 3.9.12Ubuntu 18.04执行语句为:python -m torch.distributed.launch -nproc_per_node 8 -master_port 12345 main.py端口号为12345,经测试无占用且正常使用rank 0报错信息如下,其余rank报错为缺少rank 0地址9.【ATLAS200DK产品】【CANN MINDSTUDIO MXVISION功能】哪个版本实际可用https://bbs.huaweicloud.com/forum/thread-189536-1-1.html请问有没有使用者能看下自己的开发环境, 使用哪个版本的CANN    MXVISION   MINDSTUDIO组合能够搭建成功正常的开发环境(ubuntu x86)按官方文档 都下载最新的是无法正常使用的,谢谢!【功能模块】使用mindstudio 的可视化pipeline编辑功能10.银河麒麟能否使用atlas300(3010)加速卡https://bbs.huaweicloud.com/forum/thread-189562-1-1.html我使用cat /etc/.kyinfo查看到的我的系统是Desktop-V10-SP1-Release-2107但是查看Atlas300支持的系统是没看到相应的版本02312LGAKylin Linux Advanced Server V10 SP1 for ARMKylin Linux Advanced Serve V10 SP1 for ARM02312LGAUOS 20 Server for ARMUOS 20 Server for ARM02312LGAUbuntu 20.04 LTS for ARMUbuntu 20.04 LTS Server Edition for ARM02312LGAopenEuler 20.03 LTS for ARMopenEuler 20.03 LTS for ARM (powered by openEuler)02313JTGCentOS 7.6 for ARMCentOS Linux 7 Update 6 Server for ARM02313JTGCentOS 8.2 for ARMCentOS Linux 8 Update 2 Server for ARM02313JTGKylin Linux Advanced Server V10 SP1 for ARMKylin Linux Advanced Serve V10 SP1 for ARM不晓得桌面版和服务器版的驱动能不能兼容我安装驱动之后reboot,再使用npu-smi info时候就卡死了,之后想卸载也都会卡在终端,不知道是系统的问题还是驱动不匹配的问题以上是部分昇腾论坛已结帖的问题解决整理汇总贴。