-
问题版本:DWS 8.1.0.x 升级 8.1.1.x问题现象:错误信息:【updateInstanceTask】error happend,clusterid:[xxxx] updateinstance exception Failed to get instance params . Error is Failed to get softinfo . Please check rds_soft_info table by guestAgent and xx解决措施:以root用户登录cdk master节点,执行以下命令进入运维容器。 kubectl get pods -n dws-maintain kubectl exec -ti {服务实例容器名称} -n dws-maintain bash执行以下命令,进入管理面数据库。 mysql -h{hostIp} -P {port} -utom -p{passwd}执行以下SQL语句,更新升级包信息。{升级包sha256sum值}由解压出来的8.1.0-dws-upgrade.tar.gz.sha256、v8.1.0-guestAgent-upgrade.tar.gz.sha256文件,打开后获取use rms; insert into rds_soft_info values('v8.1.0-guestAgent-upgrade.tar.gz', 'guestAgent', 'guestAgent', 'v8.1.0' , 0, NULL,'{升级包sha256sum值}'); 比如:insert into rds_soft_info values('8.1.1.202-guestAgent-f611a993-44449263-20220214183251.tar.gz', 'guestAgent', 'guestAgent', 'v8.1.1.202', 0, NULL,'b750c7eb2527439e2b854b9071c133617ba456d13f6bcd6c8c2acc9eacc4898d');
-
日前,国际权威分析机构沙利文(Frost & Sullivan)联合头豹研究院发布了《云原生市场研究报告——容器》(2022)报告显示,根据基于应用、产品和生态能力构建的云原生厂商容器产品竞争力评价模型华为云综合竞争力领跑行业多维度评分排名中国第一沙利文报告评价:“在应用方面,华为云在政企数字化、产业数字化等领域是行业领跑者,且开始布局卫星等应用场景;在产品方面,华为云在分布式云统一管控、云边协同和业务混部等性能方面具备明显的优势;在生态方面,华为云聚焦生态的打造,积极拓展生态伙伴,生态繁荣度较其他玩家优势显著。”应用能力上,华为云容器在各行业场景的应用深度和广度排名第一,并且在市场应用方面连续3年中国容器软件市场份额第一。例如,华为云CCE Turbo采用独创的容器直通网络,让两层网络变成一层,端到端连通时间缩短一半,有效支撑业务秒级扩容千容器,帮助新浪30秒扩容8000核,平稳应对流量浪涌。产品能力上,华为云容器在安全性、技术复杂度、产品支持力度等方面排名第一。华为云容器引擎 CCE 提供高可靠高性能的企业级容器应用管理服务,面向云原生2.0时代打造革命性CCE Turbo 容器集群。华为云容器实例 CCI 提供基于Kubernetes 的 Serverless 容器服务;并提供丰富客户业务的多种算力资源;华为云容器在计算、网络、调度全面加速,促进企业应用创新。生态能力上,华为云生态活跃度和生态繁荣度在主要云厂商中排名第一。华为云聚焦生态的打造,除了打造开源生态以外,还积极拓展生态伙伴,协力推动行业发展。华为云联合 CNCF、中国信通院及业界云原生技术精英,共同建立创原会,旨在通过探索前沿云原生技术、共享产业落地实践,共创云原生与业务融合的无限可能。此外,截至目前,华为云聚合超过302万开发者、超过38000家合作伙伴,云市场上架应用7400多个。不止于此,华为云在云原生容器领域持续技术创新、赋能产业。华为云容器技术与解决方案已经服务众多华为云客户,尤其是帮助众多互联网企业实现了应用敏捷创新、业务灵活部署。目前,80%的中国Top50互联网企业选择华为云。与此同时,在互联网行业市场,“H+X”(华为云+其他云)的多云部署模式也越来越受到互联网企业客户的认可与选择。数字浪潮奔涌,互联网企业当先华为云云原生助力企业生于云、长于云实现业务创新升级,云云协同,共创云上新价值互联网创新增长,选择华为云,至简共致远*转载自华为云头条撰文:华为云头条编辑:慧慧吖
-
【背景】A企业是一家位于杭州的软件开发公司,具备自主设计软件,交付软件及销售的能力,目前公司业务已经上华为云,考虑到开发及交付的便利性,准备进行容器化改,目标是能够实现软件开发即交付。业务现网状况如下:目前2台web服务器作为前端,mysql数据库,软件负载均衡器,无数据库中间件,后端EVS云硬盘,针对于本企业的现状,给出各部分的容器化改造及后续方案.
-
一.存储容器化存储作为基础组件,直接和本地盘打交道,所以我们一个要解决的事情就是如果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方式访问
-
容器与虚拟机本质上都属于虚拟化技术,所不同的是两者所在层级不同,容器在操作系统之上,与虚拟机相比少了操作系统,不同容器之间能共享操作系统,因此更轻量,启动更快,效率更好。也正因为如此,与虚拟机相比容器的隔离性要差,安全性不如虚拟机。另一方面,虚拟机应用得更普及,相关工具也更为成熟和完善。区别: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。
-
>摘要:使用Docker容器,将带UI的程序,直接转换为Web应用。很方便,跟大家分享一下。 本文分享自华为云社区《[使用Docker容器,将带UI的程序,直接转为Web应用](https://bbs.huaweicloud.com/blogs/355359?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content)》,作者:tsjsdbd。 我们可以通过Docker容器,将App的UI界面,投射到任意的网络目的端。 即:  其原理是利用X11协议,把界面投射转化为网络协议,到达目的端显示出来。 但是这种方案,有一个硬性要求:就是目的端必须要安装一个“投屏软件(X11 Server)”,比如:VcXsrv 或者 MobaXterm。 那么用户想要看到App的界面,他就得额外安装一个软件,用户体验并不是最佳的。 # 一、VNC方案 Windows的远程桌面,相信大家都用过吧。 VNC就是Linux版的远程桌面。它可以将屏幕,通过网络共享给客户端。 在服务端,安装vncserver。 在客户端,安装vncviewer。  不过,windows是自带了一个 远程桌面客户端。对VNC的话,用户就得安装一个 vnc-viewer客户端。和X11方案差不多,还是不够方便。 # 二、noVNC方案 好消息是,VNC-Viewer有一个WEB版的客户端,叫做 noVNC。它直接打开网页,就获得VNC-Viewer能力。详见:https://novnc.com/info.html 于是,我们可以将方案拓展为:  毕竟,浏览器基本上每个客户都会有。这就好比,微信大家都有,所以“单独安装一个App”vs“微信小程序” ,肯定是后者在使用更便捷一样的道理。 所以你可以看到各大云厂商,比如华为云的ECS虚机,也都自带了使用noVNC的方式来展示虚机的界面。可见noVNC的产品化可靠性还是OK的。 # 三、具体操作 这里我为了方便,准备将各种Server都安装到一个Docker容器里面,如下:  ## 1. 使用 Ubuntu:20.04 的基础镜像 因为最终我们要通过HTML访问这个容器,所以启动的时候,我们得记得开放端口: ``` docker run -it -p 80:8080 ubuntu:20.04 /bin/bash ``` 在这个容器里面,启动上图中的各种Server。 ## 2. Xvfb虚拟屏幕 首先,安装一个叫做 xvfb 的软件。这是一个“虚拟屏幕”,都在内存中模拟的屏幕。见:https://en.wikipedia.org/wiki/Xvfb 安装: ``` apt-get install -y xvfb ``` 然后启动“虚拟屏幕”: ``` Xvfb :0 -screen 0 1920x1080x24 -listen tcp -ac +extension GLX +extension RENDER ``` 其中,1920x1080x24 表示:屏幕大小(分辨率)。 24则是像素深度。 这个屏幕大小,到时候可以根据App的界面效果自己调整。 ## 3. X11vnc服务器 然后,我们安装 x11服务器(因为安装这个有交互,所以之类设置了 无交互模式) ``` export DEBIAN_FRONTEND=noninteractive apt-get install -y x11vnc ``` 然后启动 x11服务器: ``` x11vnc -forever -shared -noipv6 -passwd tsjsdbd ``` 其中标红的password换成你自己喜欢的密码。 ## 4. noVNC服务器 最后,我们通过noVNC服务器,将 VNC翻译为HTML服务, 安装: ``` apt-get install -y novnc ``` 然后启动: ``` websockify --web /usr/share/novnc 8080 localhost:5900 ``` ## 5. 启动带UI的App ``` apt-get install x11-apps DISPLAY=:0.0 xclock ``` 这里的DISPLAY变量的作用,是表示把App的界面,投射到咱们的这个“虚拟屏幕”上。 详细请看我之前的那篇文章。 ## 6. 从浏览器访问 从浏览器,访问我们的容器。地址(因为我们启动容器用来http默认端口80,所以这里URL不用设置端口了。): http://容器ip/vnc.html  这里填,第3步咱设置的密码。然后可以看到App的界面啦:  # 四、Dockerfile 这里为了大家方便,直接提供一个Dockerfile ``` FROM ubuntu:20.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get install -y novnc x11vnc xvfb EXPOSE 8080 ENTRYPOINT ["/bin/bash"] ``` 然后写个 start-novnc.sh 脚本: ``` #!/bin/bash set -e #虚拟屏幕 Xvfb :0 -screen 0 1920x1080x24 -listen tcp -ac +extension GLX +extension RENDER > /dev/null 2>&1 & #vnc服务器 x11vnc -forever -shared -noipv6 -passwd tsjsdbd > /dev/null 2>&1 & #novnc websockify --web /usr/share/novnc 8080 localhost:5900 > /dev/null 2>&1 & ``` 最后你启动app的时候,记得带上: ``` DISPLAY==========================================BN =:0.0 your-ui-app ``` 就可以了。
-
第四章:华为云容器服务介绍 学习笔记• 华为云容器全栈服务介绍华为云容器全栈服务一览特点:易使用、易运维、高性能• 云容器引擎CCE1. 基于开源Kubernetes、Docker技术的企业级容器服务。2. 借助云容器引擎,用户可以在华为云上轻松部署、管理和扩展容器化应用程序。3. CCE与Kubernetes关系CCE集群:丰富异构、高性能、安全、统一调度的容器基础设施产品。4. CCE产品架构图A、 丰富的异构算力支持:全面支持华为云各类计算实例、支持存量实例纳管;B、 高性能云原生网络:Overlay模式下网络性能较开源Flannel方案提升30%、Underlay模式下网络性能较直连损耗在55之内;C、 全面安全的云原生能力:安全加固的容器运行时,有效屏蔽各类开源漏洞、容器镜像多种策略扫描、有效识别镜像中风险D、 统一的大规模云原生调度:单集群最大支持1万节点,自研Volcano调度效率较开源调度方案提升30%• CCE使用方式可通过CCE控制台(推荐)、Kubelctl命令行、Kubernetes API使用云容器引擎服务• CCE使用流程CCE集群:标准集群,提供商用级集群服务Turbo集群:面向云原生2.0、大规模、高性能的场景做了计算、网络和调度的全面加速的集群鲲鹏集群:计算架构基于鲲鹏架构• CCE关键特性总览• 集群管理:可一键创建集群,支持多种异构基础设置• 节点\节点池管理节点:节点是容器集群组成的基本元素,取决于业务、既可以是虚拟机、也可以是物理机。节点池管理:节点池中有多个节点,节点参数配置相同,可通过设置节点模板创建节点,通过节点池功能方便实现节点动态扩缩容。• 工作负载:Deployment、Statefulset、Daemonset、Job、CronJob等类型。云容器引擎CCE提供基于Kubernetes原生类型的容器部署和管理能力,支持容器工作负载部署、配置、监控、扩容、升级、卸载、服务发现以及负载均衡等生命周期管理。根据不同工作负载的特点,CCE可提供不同的能力以保证其正常运转。• 亲和/反亲和调度A、 工作负载和可用区的亲和性:基于可用区可设置多条调度策略,只需满足其中一条就会进行调度B、 工作负载和节点的亲和性:基于节点可以设置多条调度策略,只需满足其中一条就会进行调度C、 工作负载间的亲和性:基于工作负载可以设置多条调度策略,但多条策略中设置的标签必须同时出现在一个工作负载中• 容器网络• 持久化卷存储CCE除支持本地磁盘存储外,还支持将工作负载数据存储在华为云的云存储上,当前支持云存储包括四点:本地磁盘存储云硬盘存储文件存储卷对象存储卷• 弹性伸缩根据业务需求和策略自动调整资源使用策略工作负载伸缩:HPA策略,实现Pod水平自动伸缩功能CustomedHPA:华为云自研的弹性伸缩增强能力,能基于CPU利用率、内存利用率等指标对无状态负载进行弹性扩缩容。节点伸缩:通过节点自动伸缩组件autoscaler实现,根据pod调度状态及资源使用情况对集群的节点进行自动扩缩容。• CCE使用场景• 云容器实例CCI1. 云容器实例:只需要管理运行在Kubernetes上的容器化业务,无需管理集群和服务器即可在CCI上快速创建和运行容器负载。2. CCI和CCE的差别计费模式不同、使用场景不同、资源创建不同3. CCI的使用流程4. CCI关键特性:智能调度:CCI天然支持Volcano异构容器:充分利用华为云底层异构资源,满足业务场景安全容器:每个容器/pod都运行在单独的ECS中,安全性高秒级计费:根据实际使用资源量,按需秒级计费。5. CCI应用场景:AI计算、高性能容器批量处理(Job类任务)、长稳及扩容流量处理• SWR:容器镜像服务1. SWR基本概念—仓库:集中存放镜像的空间。仓库分为公共仓库和私有仓库2. SWR基本概念—容器镜像:镜像,是多个二进制只读层的集合。3. SWR基本概念—组织:组织用于隔离镜像仓库,便于仓库和镜像的管理4. SWR的使用流程:创建组织→镜像获取→应用部署→更新镜像5. SWR镜像管理—上传镜像:客户端上传镜像(客户端版本必须为1.1/1.2以上,镜像每个layer不能超过10G)/页面上传镜像(每次最多上传10个文件,单文件大小不超过2G)6. SWR镜像管理—编辑镜像属性:包括镜像的类型、分类和描述信息7. SWR镜像管理—共享私有镜像:只有账号所有者或具备该私有镜像管理权限的IAM用户才能进行分享8. SWR镜像管理—添加触发器:实现镜像版本更新时,自动更新使用该镜像的应用。可全部触发、指定版本号触发或正则触发9. SWR镜像管理—镜像老化规则:可从存活时间和版本数目两个规则进行设置10. SWR镜像管理—自动同步镜像11. SWR镜像管理—镜像安全扫描:一键对镜像进行安全扫描,确保所用镜像安全12. SWR镜像管理—设置镜像加速器:解决公有镜像因为网络原因导致下载速度慢或下载失败的问题
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签