华为云用户手册

  • Pipeline 简介 Redis 是一个请求/响应模型的服务,通常执行一个命令的流程为: 图1 Redis 命令执行流程 客户端发送命令到 Redis 服务器。 Redis 服务器收到命令,排队等待处理。 Redis 服务器执行命令。 Redis 服务器返回结果给客户端。 上述4个步骤中,步骤1和4是IO操作,速度慢并且受网络状况影响,很容易成为瓶颈点。 为了减小网络开销,充分发挥 Redis 高性能的优势,可以使用 Pipeline 流水线执行命令。Pipeline 机制通过将一组 Redis 命令进行组装,一次发送多个命令,并在执行完成后一次性返回结果集,可以减少网络传输带来的开销,流程如下图所示: 图2 使用 Pipeline 访问Redis 上图中的 Pipeline 将3条命令封装成一组,只需要进行一次网络IO就完成了3条命令的执行。 除了网络层面的开销,使用 Pipeline 还可以减少客户端/服务器的 read()/write() 调用,提高程序的执行效率。
  • 蜂巢工软工业云小站基础实施(配置网络) 云小站内路由器的静态IP地址配置(办公网段内一个未使用静态IP) 生产预安装发货时,CPE路由器IP是DHCP自动分配的,发货到现场后,需要根据客户现场组网规划好CPE的办公网段内一个未使用的IP,由现场交付人员或客户维护人员配置CPE的静态IP地址。 CPE 地址查询:登录路由器,查询WAN口IP地址,如下图,WAN口IP地址为192.168.102.204,则:客户办公网访问平台登录地址为192.168.102.204:9900. 图1 运行状态 先从客户办公网拉一条网线接入路由器WAN后才能查询到IP地址。
  • 方案架构 图1 业务架构图 工业云小站解决方案由基础组件+可选工业应用+lSC Desk组成,具体能力如下: 基础组件 iDME、工业软件SaaS服务中心为企业提供工业软件管理服务 iDME为工业软件运行提供数据服务 云边端协同引擎服务为企业提供远程集中管理,边缘数据采集服务、 云日志服务LTS 为企业提供日志结构化处理、告警等服务 高阶服务提供上层应用运行依赖的组件和服务 硬件设施提供上层应用运行所需的计算、存储、网络等物理资源。 工业云小站设计与咨询服务为企业提供数字化转型云小站方案 容器镜像服务 SWR为企业提供容器镜像全生命周期管理的服务 交换数据空间 EDS为企业提供数据主权保护服务 可选工业应用:提供企业数字化转型所需的各种工业APP,用户按需从华为云商店订阅 l5C Desk:提供工业软件桌面管理丁具,用于用户管理订阅的工业软件 图2 部署架构图 云商店提供工业软件购买获取渠道,通过iDME,工业软件SaaS服务中心分发至边侧和端侧 iDME,工业软件Saas服务中心实现了软件的阅管理,权限管理,和应用分发 iDME为工业软件的运行提供数据服务 云边端协同引擎服务为企业提供集群管理能力和远程运维能力 云日志 服务提供了应用日志采集,日志管理,定制监控和告警规则 容器 镜像服务 提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务 交换数据空间提供企业数据高效流通,实现数据价值最大化的交换与共享平台方案优势
  • 方案优势 提升企业生产和协同效率:云小站软硬一体的解决方案,通过可选安装的生产管理软件,实现从流程设 计,到工单生产、设备管理、保养、质量管制再到出入库、进出货等,整个 生产过程的实时采集数据、控制和监控,一体化的管理,能充分达到企 业 降本增效的目的。 提供应用订阅和分发等管理能力:通过云端IDM、工业软件SaaS服务中心,和小站上的下沉版IDME、工业软件saas服务中心,用户可以便捷地订阅和管理各种工业软件APP。 支持应用自动分发部署,缩短交付周期:用户在边端订阅工业APP后,应用可以便捷地从云商店快速部署到云小站,无需再手动远程部署,减小人力消耗,缩短项目交付周期。 降低交付运维成本:基于华为云云边协同引擎服务,用户可以把所有小站服务器纳入集群,不再受地理、机房的限制,方便统一的监控和管理。 低时延:小站部署在企业侧,和用户同一网络,延时仅1-2ms。 数据安全:数据留存在企业内部,由用户控制 ,无需担心流失的风险。
  • 应用场景 场景一:服务快速部署,简单运维 客户痛点: 企业整体信息化水平较好,但面向设计和生产制造与运营的数字化系统和能力薄弱,需要先导式引入和快速部署能力支撑。 在试点应用引入过程中,公司投资人和内部管理要求对数据本地化留存和安全约束性大,很难直接使用公有云。 通过本方案实现的业务效果: 数据和业务在企业本地运行; 能够快速部署各类SaaS化或专项工业软件; 运维简单,硬件资源可扩展。 场景二:打造平台型服务 客户痛点: 制造业创新平台型商业模式,但潜在入住(联盟)企业数字化水平普遍偏低,难以支撑平台打造的业务正常开展; 平台主体数字化缺乏考虑各入住(联盟)企业本地化运维成本和一致性,难以实现用数据驱动业务协同; 通过本方案实现的业务效果: 面向各(联盟)企业本地化快速部署、开箱即用;对于部署在各(联盟)企业的软硬件可以远程统一运维管控;利用各(联盟)企业数据分析、预测业务协同开展和降本增效。 场景三:制造业生产数据精细化流程化管理 客户痛点: 原料的精细化、流程化、智能化生产加工程度不足;库存管理的精确度和供应链效率较低; 系统支撑用户管理的数字化程度低,缺乏用户数据沉淀,无法有效的用户运营管理; 线上线下的业务活动数据割裂,打通和管控难度大,难以有效利用与调控价值数据,系统集成和运维成本高; 数字化转型技术能力弱,试错成本高。 通过本方案实现的业务效果: 一套系统,成熟可信、使用便捷、成本低廉、支撑生产全过程流程化,提升整体供应链效率; 企业能够对通过对订单的管理和分配,使仓储、运输、订单等全生命周期的设计数据及信息进行高效和经济的应用和管理;同时,通过业务活动数据互通互联,推动实现线上线下网络化协同; 数字化转型升级,通过数据驱动研发设计开展和管理,达到智能制造成熟度二级及以上。 场景四:一体化统一管控 客户痛点: 生产流程、制造工艺和检验检测等生产业务标准化、智能化程度低,充满了大量非结构化信息或不可控因素; 专业软件工具分散部署,数据、应用、资源没有统一安全管控,企业核心数据和知识产权无法充分保障,数据安全风险高; 智能化要求高,但数字化转型技术能力弱,试错成本高; 过去应急或被动上的系统间都是孤岛,打通困难,系统集成和运维成本高。 通过本方案实现的业务效果: 从工单、生产、设备管理、保养、质量管制到出入库、进出货等整合的系统,整个生产过程实时采集数据、控制和监控,并能实现对设备层的直接管控; 数字化转型升级,通过数据驱动生产制造业务开展和管理,达到智能制造成熟度二级及以上; 一套系统,成熟可信、使用便捷、成本低廉、支撑生产制造多场景,支持与其他业务、管理系统联动。
  • 快照冷启动 Java应用冷启动速度慢的问题尤为突出。华为云FunctionGraph创新提出的基于进程级快照的冷启动加速解决方案,致力于在用户无感知(无需/少量进行代码适配)的前提下,帮助用户突破冷启动的性能瓶颈。本优化方案直接从应用初始化后的快照进行运行环境恢复,跳过复杂的框架、业务初始化阶段,从而显著降低Java应用的启动时延,实测性能提升达90%+。 用户使用Java函数可以打开冷启动快照加速的配置开关,详情请参见配置快照式冷启动。华为云FunctionGraph会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。后续调用该函数并触发冷启动扩容时,会直接从提前初始化后的应用快照来恢复执行环境,而非重新走一遍初始化流程,以此达到极大提升启动性能的效果。
  • 精简代码大小和镜像瘦身 由于FunctionGraph在冷启动的时候会下载函数代码,下载代码的过程也会影响启动时间。如果代码包太大,下载时间将会变长,导致增加FunctionGraph的启动时间;如果使用 自定义镜像 函数,镜像越大,启动时间也会越长。所以,为了降低冷启动时间,可以对应用程序进行瘦身,比如在程序中移除不必要的代码、减少不必要的第三方库依赖等。例如,在Node.js中执行“npm prune”命令、在Python中执行“autoflake”。另外,某些第三方库中可能会包含测试用例源代码、无用的二进制文件和数据文件等,删除无用文件可以降低函数代码下载和解压时间。
  • 示例流程 图1 给用户授权MetaStudio权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予MetaStudio管理员权限“MetaStudio FullAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,验证MetaStudio FullAccess的管理员权限。 在“服务列表”中选择数字内容生产线,进入服务主界面,单击“分身形象制作”,并参考形象制作,制作分身数字人。如果制作成功,说明“MetaStudio FullAccess”已生效。
  • 重定向 开启重定向,可以在客户端将对目标地址的请求重定向到配置的新的目标地址。 YAML设置如下: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - match: - uri: exact: /v1/getProductRatings redirect: # 配置重定向参数 uri: /v1/bookRatings authority: newratings.default.svc.cluster.local 请根据实际需求调整配置参数。 父主题: 服务路由协议
  • CORS 当一个资源向该资源所在服务器的不同的域发起请求时,就会产生一个跨域的HTTP请求。出于安全原因,浏览器会限制从脚本发起的跨域HTTP请求。通过跨域资源共享CORS机制可允许Web应用服务器进行跨域访问控制,使跨域数据传输安全进行。 YAML设置如下: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - route: - destination: host: ratings.prod.svc.cluster.local subset: v1 corsPolicy: # 配置跨域资源共享 allowOrigins: - exact: https://example.com allowMethods: - POST - GET allowCredentials: false allowHeaders: - X-Foo-Bar maxAge: "24h" 请根据实际需求调整配置参数。 父主题: 服务路由
  • 创建守护进程集 登录U CS 控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“工作负载”,切换至“守护进程集”页签,并单击右上角“镜像创建”。 若使用已有的YAML创建工作负载,请单击右上角“YAML创建”。 设置工作负载基本信息。 负载类型:选择“守护进程集”。 负载名称:新增工作负载的名称,命名必须唯一。 命名空间:选择工作负载所在命名空间。如需新建命名空间,请参见创建命名空间。 描述:工作负载的描述信息。 设置工作负载容器配置。 Pod中可以配置多个容器,您可以单击右侧“添加容器”为Pod配置多个容器并分别进行设置。 图1 容器配置 基本信息: 表1 基本信息参数说明 参数 说明 容器名称 为容器命名。 镜像名称 单击后方“选择镜像”,选择容器使用的镜像。 我的镜像:当前区域下华为云镜像仓库中的镜像。若无可用的镜像,可单击“上传镜像”进行上传。 镜像中心:开源镜像仓库中的官方镜像。 共享镜像:由他人账号共享的私有镜像,详情请参见共享私有镜像。 镜像版本 选择需要部署的镜像版本。 更新策略 镜像更新/拉取策略。勾选“总是拉取镜像”表示每次都从镜像仓库拉取镜像;如不勾选则优先使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。 CPU配额 申请:容器需要使用的最小CPU值,默认0.25Core。 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。 内存配额 申请:容器需要使用的内存最小值,默认512MiB。 限制:允许容器使用的内存最大值。如果超过,容器会被终止。 关于CPU/内存配额申请和限制的具体说明请参见设置容器规格。 初始化容器 选择容器是否作为初始化容器。 Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。详细说明请参见Init 容器。 生命周期:设置生命周期回调函数可在容器的特定阶段执行调用,比如容器在停止前希望执行某项操作,就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理,详情请参见设置容器生命周期。 健康检查:设置健康检查可以在容器运行过程中定时检查容器的健康状况,详情请参见设置容器健康检查。 环境变量:容器运行环境中设定的一个变量,通过环境变量设置的配置项不会随着Pod生命周期结束而变化,详情请参见设置环境变量。 数据存储:配置容器存储,可以使用本地存储和存储卷声明(PVC)。建议使用PVC将工作负载Pod数据存储在 云存储 上。若存储在本地磁盘上,节点异常无法恢复时,本地磁盘中的数据也将无法恢复。容器存储相关内容请参见容器存储。 安全设置:对容器权限进行设置,保护系统和其他容器不受其影响。请输入用户ID,容器将以当前用户权限运行。 镜像访问凭证:用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用,如所选镜像为公开镜像,则无需选择密钥。密钥的创建方法请参见创建密钥。 (可选)单击服务配置栏的,进行工作负载服务配置。 若工作负载需要和其它服务互访,或需要被公网访问,您需要添加服务(Service),设置访问方式。工作负载访问的方式决定了这个工作负载的网络属性,不同访问方式的工作负载可以提供不同网络能力,操作详情请参见服务与路由。 您也可以在创建完工作负载之后再创建Service,参见集群内访问(ClusterIP)和节点访问(NodePort)。 Service名称:新增服务名称,用户可自定义,服务名称必须唯一。 访问类型: 集群内访问(ClusterIP):只能集群内访问服务。 节点访问(NodePort):可以通过集群内任意节点访问到服务。 服务亲和(仅节点访问设置): 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口(仅节点访问设置):容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 (可选)单击“展开高级配置”,设置工作负载高级配置。 升级策略:指定守护进程集的升级方式,包括整体替换升级和逐步滚动升级,详细参数说明请参见配置工作负载升级策略。 滚动升级:滚动升级将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新的和旧的实例上,因此业务不会中断。 替换升级:守护进程集的替换升级,需要手动删除旧实例,再创建新实例。升级过程中业务会中断。 调度策略:您可设置亲和(affinity)与反亲和(anti-affinity)实现Pod的计划性调度,详细信息请参见配置调度策略(亲和与反亲和)。 标签与注解:您可以单击“添加”为Pod增加标签或注解,新增标签或注解的键不能与已有的重复。 单击“下一步:调度与差异化”,对选择的集群进行调度与差异化配置。在选择可调度集群后,可对容器进行“差异化配置”。 调度策略: 调度方式: 复制分发:工作负载将在勾选的所有集群中进行部署。 部署集群:单击集群即可将其勾选为工作负载可调度的集群,集群个数请您根据自身业务进行确定。 差异化配置: 工作负载在不同的集群中部署可进行差异化的配置。在选择可调度集群后单击对应集群右上角,即可对每个集群进行差异化配置,差异化后的容器配置只对该集群生效。 具体参数说明请参见容器配置。 设置完成后,单击“创建工作负载”完成创建。
  • 重写 开启重写,可以在不修改客户端的访问的目标地址前提下,根据配置重写请求的URL。 YAML设置如下: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - match: - uri: prefix: /ratings rewrite: uri: /v1/bookRatings route: # 配置重写参数 - destination: host: ratings.prod.svc.cluster.local subset: v1 请根据实际需求调整配置参数。 父主题: 服务路由
  • 连接池 在更新流量策略内容时,可选择是否开启。 目的是断开超过阈值的连接和请求,保护目标服务。 通过连接池管理可以配置阈值来防止一个服务的失败级联影响到整个应用。连接池设置应用于上游服务的每个实例,可以应用在TCP级别和HTTP级别。 通过连接池管理可以控制service1服务对目标服务service2的请求: 当service1服务对目标服务service2的请求不超过配置的最大连接数时,放行; 当service1服务对目标服务service2的请求不超过配置的最大等待请求数时,进入连接池等待; 当service1服务对目标服务service2的请求超过配置的最大等待请求数时,直接拒绝。 父主题: 流量策略
  • 概述 应用服务网格(Application Service Mesh,简称ASM)是华为云基于开源Istio推出的服务网格平台,它深度、无缝对接了华为云的企业级Kubernetes集群服务云容器引擎(CCE),在易用性、可靠性、可视化等方面进行了一系列增强,可为客户提供开箱即用的上手体验。 ASM提供非侵入式的微服务治理解决方案,支持完整的生命周期管理和流量治理,兼容Kubernetes和Istio生态,其功能包括负载均衡、熔断、限流等多种治理能力。 ASM内置灰度发布流程,提供一站式自动化的发布管理。ASM基于无侵入的监控数据采集,提供实时流量拓扑、调用链等服务性能监控和运行诊断,构建全景的服务运行视图。 父主题: 网格管理
  • 创建无状态负载 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“工作负载”,在“无状态负载”页签中单击右上角“镜像创建”。 若使用已有的YAML创建工作负载,请单击右上角“YAML创建”。 设置工作负载基本信息。 负载类型:选择“无状态负载”。 负载名称:新增工作负载的名称,命名必须唯一。 命名空间:选择工作负载所在命名空间。如需新建命名空间,请参见创建命名空间。 描述:工作负载的描述信息。 实例数量:设置多集群的工作负载中各集群的实例数。用户可以设置具体实例个数,默认为2。每个工作负载实例都由相同的容器部署而成。在UCS中可以通过设置弹性扩缩容策略,根据工作负载资源使用情况,动态调整工作负载实例数。 设置工作负载容器配置。 Pod中可以配置多个容器,您可以单击右侧“添加容器”为Pod配置多个容器并分别进行设置。 图1 容器配置 基本信息: 表1 基本信息参数说明 参数 说明 容器名称 为容器命名。 镜像名称 单击后方“选择镜像”,选择容器使用的镜像。 我的镜像:当前区域下华为云镜像仓库中的镜像。若无可用的镜像,可单击“上传镜像”进行上传。 镜像中心:开源镜像仓库中的官方镜像。 共享镜像:由他人账号共享的私有镜像,详情请参见共享私有镜像。 镜像版本 选择需要部署的镜像版本。 更新策略 镜像更新/拉取策略。勾选“总是拉取镜像”表示每次都从镜像仓库拉取镜像;如不勾选则优先使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。 CPU配额 申请:容器需要使用的最小CPU值,默认0.25Core。 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。 内存配额 申请:容器需要使用的内存最小值,默认512MiB。 限制:允许容器使用的内存最大值。如果超过,容器会被终止。 关于CPU/内存配额申请和限制的具体说明请参见设置容器规格。 初始化容器 选择容器是否作为初始化容器。 Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。详细说明请参见Init 容器。 生命周期:设置生命周期回调函数可在容器的特定阶段执行调用,比如容器在停止前希望执行某项操作,就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理,详情请参见设置容器生命周期。 健康检查:设置健康检查可以在容器运行过程中定时检查容器的健康状况,详情请参见设置容器健康检查。 环境变量:容器运行环境中设定的一个变量,通过环境变量设置的配置项不会随着Pod生命周期结束而变化,详情请参见设置环境变量。 数据存储:配置容器存储,可以使用本地存储和存储卷声明(PVC)。建议使用PVC将工作负载Pod数据存储在云存储上。若存储在本地磁盘上,节点异常无法恢复时,本地磁盘中的数据也将无法恢复。容器存储相关内容请参见容器存储。 安全设置:对容器权限进行设置,保护系统和其他容器不受其影响。请输入用户ID,容器将以当前用户权限运行。 镜像访问凭证:用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用,如所选镜像为公开镜像,则无需选择密钥。密钥的创建方法请参见创建密钥。 (可选)单击服务配置栏的,进行工作负载服务配置。 若工作负载需要和其它服务互访,或需要被公网访问,您需要添加服务(Service),设置访问方式。工作负载访问的方式决定了这个工作负载的网络属性,不同访问方式的工作负载可以提供不同网络能力,操作详情请参见服务与路由。 您也可以在创建完工作负载之后再创建Service,参见集群内访问(ClusterIP)和节点访问(NodePort)。 Service名称:新增服务名称,用户可自定义,服务名称必须唯一。 访问类型: 集群内访问(ClusterIP):只能集群内访问服务。 节点访问(NodePort):可以通过集群内任意节点访问到服务。 服务亲和(仅节点访问设置): 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口(仅节点访问设置):容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 (可选)单击“展开高级配置”,设置工作负载高级配置。 升级策略:指定无状态负载的升级方式,包括整体替换升级和逐步滚动升级,详细参数说明请参见配置工作负载升级策略。 滚动升级:滚动升级将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新的和旧的实例上,因此业务不会中断。 替换升级:先删除旧实例,再创建新实例。升级过程中业务会中断。 调度策略:您可设置亲和(affinity)与反亲和(anti-affinity)实现Pod的计划性调度,详细信息请参见配置调度策略(亲和与反亲和)。 标签与注解:您可以单击“添加”为Pod增加标签或注解,新增标签或注解的键不能与已有的重复。 容忍策略:当工作负载实例所在的节点不可用时,系统将实例重新调度到其它可用节点的时间窗,默认为300秒。 单击“下一步:调度与差异化”,对选择的集群进行调度与差异化配置。在选择可调度集群后,可对容器进行“差异化配置”。 集群调度策略: 调度方式: 集群权重:手动设置各集群的权重,工作负载在各集群的实例数将根据设置的权重比例进行分配。 自动均衡:工作负载将根据资源余量在可调度的集群中自动选择集群进行部署。 部署集群:选择工作负载可调度的集群,集群个数请您根据自身业务进行确定。 “集群权重”模式下,需手动设置各集群权重值,权重非0的集群将自动勾选为可调度集群,权重为0则表示该集群不可调度。状态非正常的集群无法设置权重。 “自动均衡”模式下,单击集群即可将其勾选为可调度集群。 差异化配置: 工作负载在不同的集群中部署可进行差异化的配置。在选择可调度集群后单击对应集群右上角,即可对每个集群进行差异化配置,差异化后的容器配置只对该集群生效。 具体参数说明请参见容器配置。 设置完成后,单击“创建工作负载”,完成创建后,可单击“返回工作负载列表”查看所创建的工作负载。
  • 熔断 在更新流量策略内容时,可选择是否开启。熔断器是提高微服务韧性的一个非常典型的手段,会自动隔离不健康的实例,提高服务整体访问成功率。 熔断器跟踪服务实例的访问状态,通过跟踪一段时间内服务实例的访问请求判定其健康状况,将不健康的实例从连接池中隔离,从而提高服务总体的访问成功率,适用于HTTP和TCP服务。 对于HTTP服务,连续返回5xx错误的实例认定为不健康。对于TCP服务,连接超时或者连接失败的实例认定为不健康。 父主题: 流量策略
  • 集群安装检查项 在安装本地集群前,您需要对节点进行一系列检查。 表格中的命令适用于HCE与Redhat操作系统,若您使用Ubuntu操作系统,请将命令中的“yum”修改为“apt”。 检查类型 检查名 检查内容 检查通过标准 集群检查 节点架构检查 所有安装的Master节点架构检查 所有安装节点架构必须一致 节点主机名检查 所有安装的Master节点主机名检查 所有安装节点主机名必须不同 节点时钟同步检查 所有安装的Master节点时钟同步状态检查 所有安装节点主机时间差异必须小于10秒 VIP使用检查 VIP是否被其他节点占用 VIP必须处于空闲状态,检查依据22端口是否能被访问通 节点检查 节点语言检查 节点语言设置必须符合约束 节点语言设置符合en_US.UTF-8、en_GB.UTF-8任何一种 节点操作系统检查 节点操作系统必须符合约束 节点操作系统为Ubuntu 22.04、Redhat 8.6、HCE 2.0任何一种 系统命令检查 节点具备基础命令行工具 操作系统具备以下命令行工具:ifconfig、netstat、curl、systemctl、nohup、pidof、mount、uname、lsmod、swapoff、hwclock、ip、ntpdate(对接ntp场景具备) 端口空闲检查 节点必装服务端口未被占用 操作系统以下端口未被占用: 4001、4002、4003、2380、2381、2382、4011、4012、4013、4005、4006、4007、5444、8080、10257、10259、4133、20100、9444、20102、9443、5443、4134、4194、10255、10248、10250、80、443、10256、10249、20101 keepalived安装检查 keepalived未安装 执行yum list --installed keepalived列表无对应服务 haproxy安装检查 haproxy未安装 执行yum list --installed haproxy列表无对应服务 runit安装检查 runit未安装 执行yum list --installed runit列表无对应服务 paas用户检查 节点paas用户处于可创建状态 节点paas用户不存在且id为10000的用户未被占用 ntp服务检查 ntp服务处于可用状态 chrony需配置好ntpserver服务器,在节点执行 chronyc sources -v 可检查ntpserver服务器状态 说明: 默认ntp为chrony,默认使用chrony命令进行进行检查
  • 主机最小化安装要求 不使用的软件包不允许存在系统中 遵循最小化安装原则,只安装业务需要的软件包与服务组件。减少系统漏洞,降低系统遭受攻击风险。 用于生产环境的系统中不允许保留开发和编译工具 系统中不允许存在如下开发工具和编译工具: 'cpp' (/usr/bin/cpp) 'gcc' (/usr/bin/gcc) 'ld' (/usr/bin/ld) 'lex' (/usr/bin/lex) 'rpcgen' (/usr/bin/rpcgen) 如果产品的生产环境,比如在部署或运行过程中需要python、lua等解释器,则可以保留解释器运行环境,否则不允许保留。 'python' (/usr/bin/python) 'lua' (/usr/bin/lua) 同样情形适用于perl解释器,Suse系统的一些管理程序依赖perl解释器,在这种情形下,则可保留perl解释器,否则需要去除。 perl (/usr/bin/perl) 操作系统中不允许安装显示安全策略的工具 防止系统的安全信息泄露。依照业务需求,预安装的安全加固工具,限制其文件的所有者为root,并且仅root具有执行权限。 操作系统中不允许存在网络嗅探类的工具 tcpdump、ethereal等嗅探工具不允许出现在系统上,防止被恶意使用。 在不需要Modem系统中不应默认安装Modem 在不需要Modem系统中不应默认安装Modem,严格遵循系统最小化安装。
  • 检查节点apt源(Ubuntu) 检查节点apt源操作适用于操作系统为Ubuntu的节点,若您的节点操作系统为HCE或Redhat,请参见检查节点yum源(HCE、Redhat)进行检查。 在本地集群执行纳管节点操作时(纳管节点是指待添加到本地集群管理的服务器),部分安装组件如ntpdate等,需要从apt源中获取依赖包。故纳管节点前,请确保节点上apt源是可用的,若不可用,请执行如下操作。 以安装用户(默认为root)登录待安装的集群管理节点。 编辑“/etc/apt/sources.list”。 具体信息以实际规划的apt源服务器地址为准。 保存文件,执行如下命令。 sudo apt-get update 请分别登录到规划的节点执行上述操作。
  • 检查节点yum源(HCE、Redhat) 在本地集群执行纳管节点操作时,部分安装组件如ntpdate等,需要从yum源中获取依赖包。故纳管节点前,请确保节点上yum源是可用的,若不可用,请执行如下操作。 以安装用户(默认为root)登录待安装的集群管理节点。 修改/etc/yum.repos.d/目录下的软件源配置文件。 具体信息以实际规划的yum源服务器地址为准。 保存文件,执行如下命令。 sudo yum clean all sudo yum makecache 请分别登录到规划的节点执行上述操作。
  • 使用本地集群KubeConfig文件 拿到ucs-ctl生成的KubeConfig之后,还需要使KubeConfig在节点上生效,步骤如下: 复制KubeConfig到节点上。 scp /local/path/to/kubeconfig user@remote:/remote/path/to/kubeconfig 如果当前节点添加过EnableSecretEncrypt环境变量,需要先取消。 unset EnableSecretEncrypt 使KubeConfig生效,可选方法: 方法一:复制到默认位置。 mv /remote/path/to/kubeconfig $HOME/.kube/config 方法二:环境变量指定。 export KUBECONFIG=/remote/path/to/kubeconfig 方法三:命令行参数指定。 kubectl --kubeconfig=/remote/path/to/kubeconfig 上述操作之后,就可以访问本地集群的API server了。关于KubeConfig更详细的用法可参考:使用kubeconfig文件组织集群访问Kubernetes。
  • 获取本地集群KubeConfig文件 KubeConfig是Kubernetes集群中组织有关集群、用户、命名空间和身份认证机制信息的配置文件,Kubectl使用KubeConfig来获取集群的信息并与API server进行通信。 获取本地集群的KubeConfig需要使用ucs-ctl工具,获取步骤如下: 使用ucs-ctl获取集群名称。 ./ucs-ctl get cluster 使用ucs-ctl导出指定集群的KubeConfig。 ./ucs-ctl get kubeconfig -c test-redhat86 -o kubeconfig 可以使用ucs-ctl get kubeconfig -h查看获取KubeConfig所使用到的参数。 -c, --cluster:指定待导出KubeConfig的集群名。 -e, --eip:指定API server的eip。 -o, --output:指定KubeConfig导出文件名。
  • 服务网关概述 服务网关是网格的流量入口。网格外部的客户端通过服务网关访问网格内的服务。 服务网关描述了外部访问端口、协议和证书等配置。同时,通过在服务网关上配置路由规则可以对网关入口流量进行管理,对于不同的访问协议可以配置不同的路由。 图1 服务网关 目前默认是基于Kubernetes Gateway API模型实现网关能力,如需要使用原Istio API (如 Gateway 和 VirtualService)能力请参考如何使用Istio API配置网关路由规则。 父主题: 服务网关
  • 概述 应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。如果直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。 灰度发布,是版本升级平滑过渡的一种方式,其本质就是根据请求、比例或其他混合条件切分流量,其核心工作是实现多个版本同时在线,并通过一定的流量策略将部分流量切分到灰度版本上,当版本升级时,使部分用户使用新版本,其他用户继续使用老版本,待新版本稳定后,逐步扩大范围把所有用户流量都迁移到新版本上面来。 这样可以最大限度地控制新版本发布带来的业务风险,降低故障带来的影响面,同时支持快速回滚。 图1 灰度发布流程 父主题: 灰度发布
  • 请求超时 开启请求超时,服务访问超时系统会自动处理,快速失败,避免资源锁定和请求卡顿。 YAML设置如下: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: my-productpage-rule namespace: istio-system spec: hosts: - productpage.prod.svc.cluster.local http: - timeout: 5s # 配置请求超时参数 route: - destination: host: productpage.prod.svc.cluster.local 请根据实际需求调整配置参数。 父主题: 服务路由
  • 基础软件规划 本地集群节点的操作系统、内核版本等基础软件规划需要符合表1中的要求。 表1 基础软件规划 系统架构 系统类型 网络模型 操作系统版本 内核版本限制 x86 Ubuntu 22.04 Cilium 检查命令:cat /etc/lsb-release DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS" 检查命令:uname -r 5.10.0-46-generic及以上 Redhat 8.6 Cilium 检查命令:cat /etc/os-release Red Hat Enterprise Linux release 8.6 (Ootpa) 检查命令:uname -r 4.18.0-372.9.1.el8.x86_64 HCE OS 2.0 Cilium 检查命令:cat /etc/os-release Huawei Cloud EulerOS 2.0 (x86_64) 检查命令:uname -r 5.10.0-60.18.0.50.r865_35.hce2.x86_64 ARM HCE OS 2.0 Cilium 检查命令:cat /etc/os-release Huawei Cloud EulerOS 2.0 (aarch64) 检查命令:uname -r 虚拟机: 5.10.0-60.18.0.50.r1083_58.hce2.aarch64 裸机: 5.10.0-136.12.0.86.r1526_92.hce2.aarch64 Cilium是一种网络插件,支持BGP、eBPF等网络协议,详细了解Cilium请参见Cilium官方文档。 HCE OS 2.0(华为云欧拉操作系统)是基于华为开源社区openEuler构建的Linux操作系统,提供云原生、高性能、安全稳定的执行环境来开发和运行应用程序,支持X86、ARM64等硬件架构。如需安装HCE OS 2.0,请提交工单,联系技术支持人员。详细了解HCE OS请参见HCE OS文档。 集群节点CPU架构暂不支持异构混部,请规划好集群的节点架构为X86或ARM64。 1.28.5及之后集群版本,支持HCE OS 2.0 ARM系统架构类型。 父主题: 安装本地集群的业务规划
  • 配置条件触发自动切流策略 在CPD组件部署成功并正常运行后,您需要创建Remedy对象,以在特定触发条件下执行特定动作,如在集群CoreDNS组件故障后执行MCI切流。 Remedy对象的配置文件示例如下所示。示例YAML定义了一个Remedy对象,可以通过member1或member2集群上的CPD上报CoreDNS解析功能,在功能故障时自动将该集群上的MCI进行切流。详细的Remedy对象参数说明请参见表2。 apiVersion: remedy.karmada.io/v1alpha1 kind: Remedy metadata: name: foo spec: clusterAffinity: clusterNames: - member1 - member2 decisionMatches: - clusterConditionMatch: conditionType: ServiceDomainNameResolutionReady operator: Equal conditionStatus: "False" actions: - TrafficControl 表2 Remedy参数说明 参数 描述 spec.clusterAffinity.clusterNames 策略关注的集群名列表。仅在该列表中的集群会执行指定动作,为空时不会执行任何动作。 spec.decisionMatches 触发条件列表。当上述集群列表中指定的集群满足任一触发条件时,即会执行指定动作。当列表为空时,表示无条件触发。 conditionType 触发条件的类型。当前仅支持ServiceDomainNameResolutionReady类型,即CPD上报的CoreDNS 域名 解析状态。 operator 判断逻辑,仅支持Equal和NotEqual两种值,即等于和不等于。 conditionStatus 触发条件的状态。 actions 策略要执行的动作,目前仅支持TrafficControl,即流量控制。
  • 头域控制 开启头域控制,可以灵活增加、修改和删除指定HTTP头域,非侵入方式管理请求内容。只支持路由上的头域操作,暂不支持对于特定后端的头域操作。 YAML设置如下: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: reviews-route spec: hosts: - reviews.prod.svc.cluster.local http: # 修改指定HTTP头域 - headers: request: set: test: "true" route: - destination: host: reviews.prod.svc.cluster.local subset: v2 weight: 25 - destination: host: reviews.prod.svc.cluster.local subset: v1 headers: response: remove: - foo weight: 75 请根据实际需求调整配置参数。 父主题: 服务路由
  • 重试 开启重试,服务访问失败时会自动重试,提高总体访问成功率和质量。 YAML设置如下: apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - route: - destination: host: ratings.prod.svc.cluster.local subset: v1 retries: # 配置重试参数 attempts: 3 perTryTimeout: 2s retryOn: connect-failure,refused-stream,503 请根据实际需求调整配置参数。 父主题: 服务路由
  • HTTP协议服务路由 HTTP是当前最通用、内容最丰富的协议,控制也最多,是ASM服务上支持最完整的一种协议。服务网格处理的是七层流量,指的主要就是这部分能力。 表1 HTTP协议服务路由参数 匹配条件参数 URI StringMatch类型,统一资源标识符,可选完全匹配/前缀匹配/正则匹配 输入URI,复选框可选择是否忽略大小写 Scheme StringMatch类型,表示协议采集,可选完全匹配/前缀匹配/正则匹配 输入Scheme Method StringMatch类型,表示请求方法,可选完全匹配/前缀匹配/正则匹配 输入Method Authority StringMatch类型,表示权限配置,可选完全匹配/前缀匹配/正则匹配 输入Authority 头域 Cookie内容 基于HTTP Cookie 计算哈希,可选完全匹配/前缀匹配/正则匹配 输入值 自定义Header 基于HTTP Header 计算哈希,可选完全匹配/前缀匹配/正则匹配 输入键值对 用户代理 根据所需操作系统,选择用户代理 端口 表示请求的服务端口,下拉列表中选择一个可用的端口号 参数 表示匹配URL中的请求参数,可选完全匹配/前缀匹配/正则匹配 输入键值对 源负载标签 map类型的键值对,表示请求来源的负载匹配标签 源命名空间 匹配源服务的命名空间 服务目标参数 版本 选择服务子集版本 流量权重 可以控制实例上接收的流量比例,输入值必须在0到100之间
共100000条