华为云用户手册

  • 迁移前准备 已经购买了 GaussDB (DWS)和 CDM 集群,参见CDM使用指南。 需确保源Hologres集群、目标GaussDB(DWS)集群与CDM网络互通。本例GaussDB(DWS)和CDM创建在同一个区域、同一个网络私有云和子网下。 迁移用户权限放通。 源端和目标端客户端安装完成。 已准备表1所列的迁移工具:DSC、DataCheck。 DataCheck运行环境满足以下要求: 服务器:Linux或Windows服务器,支持64位操作系统。 JRE或JDK:系统已安装JRE 1.8。 网络环境:安装、运行DataCheck工具的服务器,需要与待连接的数据库的网络互通。
  • 步骤一:元数据迁移 在Hologres中,使用以下SQL命令进行用户的角色和权限查询。 1 2 SELECT ROLNAME FROM pg_roles; SELECT user_display_name(ROLNAME) FROM pg_roles; 在GaussDB(DWS)中,集群创建成功后,默认情况下未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。默认只有对象所有者或者系统管理员可以查询、修改和销毁对象。根据Hologres的查询出的角色和权限,相应在GaussDB(DWS)中创建对应的角色和权限,并通过以下途径授权用户权限。 使用GRANT将对象的权限授予其他用户。 1 2 GRANT USAGE ON SCHEMA schema TO user; GRANT SELECT ON TABLE schema.table To user; 使用户继承角色所拥有的对象权限。 1 2 CREATE ROLE role_name WITH CREATEDB PASSWORD '*******'; GRANT role_name to user; 导出源语法。源语法是客户业务的实现逻辑,从Hologres中导出源语法,再修改为适用于GaussDB(DWS)的语法,可以减少建模的工作量,提升业务迁移的效率。 执行以下SQL进行全量语法导出。 1 SELECT hg_dump_script('schema_name.table_name'); 由于源语法涉及业务范围的识别,需熟悉业务的DBA进行操作,建议源语法由客户DBA提供。 如果进行批量导出,可以使用UNION ALL将所有待查询表关联,语法格式如下: 1 2 3 4 SELECT hg_dump_script('schema_name.table_name') UNION ALL SELECT hg_dump_script('schema_name.table_name') … 如果执行失败,需要使用如下命令在DB中创建extension,然后再执行上述SQL。 1 CREATE EXTENSION hg_toolkit; 连接GaussDB(DWS),执行以下SQL创建数据库,推荐使用MySQL兼容模式建库。 1 CREATE DATABASE tldg WITH ENCODING 'UTF-8' TEMPLATE template0 DBCOMPATIBILITY 'MYSQL'; 使用DSC工具对DDL语法进行转换。 解压迁移前准备获取到的DSC工具包。 将待转换的DDL语法文件放入DSC的input文件夹中。 图2 input目录 打开命令行工具,Windows环境下双击runDSC.bat。(Linux环境下运行runDSC.sh。) 执行以下命令进行语法转换。 1 runDSC.bat -S Hologres 图3 DDL语法转换 可以在output文件夹下查看转换结果。 图4 DDL转换结果 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。 DSC更多内容请参见DSC工具使用指导。
  • 步骤三:表数据校验 迁移完成之后,可使用数据校验工具DataCheck校验源端、目标端的数据是否一致。 下载软件包后,解压DataCheck-*.zip包,进入DataCheck-*目录,即可使用。目录下各文件的使用说明参见表2。 配置工具包。 Windows环境下: 打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。Holo源的配置参考下图: 图16 配置DataCheck 文件中的密码src.passwd和dws.passwd可使用工具,执行以下命令生成密文。 encryption.bat password 运行成功后会在本地bin目录下生成加密文件,如下图。 Linux环境下: 其他步骤相同。密文生成方法与上文中Window环境下的方法类似,命令为sh encryption.sh [password]。 执行数据校验。 Windows环境下: 打开check.input文件,将要校验的Schema、数据库、源表、目标端表填入,Row Range可根据需要填写特定范围的数据查询语句。 源端的库名在配置文件中配置后,check.input文件中的源端会默认填写配置文件中的库名,若check.input文件中填入其他库名,以check.input文件中的优先级为高。 校验级别Check Strategy支持high、middle、low三种,若未填写,默认为low。 校验模式Check mode支持statistics,即统计值校验。 下图为元数据对比的check_input文件。 图17 check_input 在bin目录下使用命令datacheck.bat执行校验工具: 查看已生成的校验结果 check_input_result.xlsx: 下图为源端元数据与目标端一致的结果。 下图为源端元数据与目标端不一致的结果。 统计值校验参考下图。 Linux环境下: 编辑check_input.xlsx文件并上传,参考Window环境下的第一步。 使用命令sh datacheck.sh执行校验工具。 查看校验结果check_input_result.xlsx(校验结果分析与Windows场景相同)。
  • 步骤五:准备DWS对接Flink工具dws-connector-flink dws-connector-flink是一款基于DWS JDBC接口实现对接Flink的一个工具。在配置 DLI 作业阶段,将该工具及依赖放入Flink类加载目录,提升Flink作业入库DWS的能力。 浏览器访问https://mvnrepository.com/artifact/com.huaweicloud.dws。 在软件列表中选择最新版本的DWS Connectors Flink,本实践选择DWS Connector Flink 2 12 1 12。 单击“1.0.4”分支,实际请以官网发布的新分支为准。 单击“View ALL”。 单击dws-connector-flink_2.12_1.12-1.0.4-jar-with-dependencies.jar,下载到本地。 创建OBS桶,本实践桶名设置为obs-flink-dws,并将此文件上传到OBS桶下,注意桶也保持与DLI在一个区域下,本实践为“ 华北-北京四”。 图12 上传jar包到OBS桶
  • 参考信息 更多参考信息可查看工具指南-DataCheck。 表1 DataCheck目录说明 文件或文件夹 说明 DataCheck bin 保存校验工具入口脚本。 Windows版本:datacheck.bat Linux版本:datacheck.sh conf 配置文件,进行源数据库和目的数据库的连接配置和日志打印设置。 lib 保存校验工具运行所需的相关jar包。 check_input.xlsx 待校验的表信息,包括Schema名、表名、列名等。 记录用户的校验级别信息和校验规则。已支持3种级别校验,包括high、middle、low,默认为low。 logs 压缩包中不包含该文件,校验工具执行后自动生成,记录工具运行过程日志。 check_input_result.xlsx 压缩包中不包含该文件,执行校验工具后会在check_input.xlsx相同路径下生成校验结果文件。 表2 数据校验工具基本功能介绍 DataCheck工具介绍 支持DWS,MySQL,PostgreSQL数据库的数据校验。 支持通用类型字段校验:数值、时间、字符类型。 支持校验级别设置:包括high、middle、low三种。 支持指定schema、表名、列名进行校验。 支持指定记录的校验范围,默认为校验所有记录。 校验方式涉及count(*)、max、min、sum、avg以及抽样明细校验等方式。 输出校验结果和相关校验明细说明。 表3 数据校验级别说明 校验级别 校验说明 校验相关语法 低 数据数量校验 条数校验: COUNT(*) 中 数据数量校验 数值类型校验 条数校验: COUNT(*) 数值校验: MAX, MIN, SUM, AVG 高 数据数量校验 数值类型校验 日期类型校验 字符类型校验 条数校验: COUNT(*) 数值校验: MAX, MIN, SUM, AVG 日期校验: MAX, MIN 字符校验:order by limit 1000,读出数据并校验内容是否相同。
  • 步骤七:表数据校验 迁移完成之后,可使用数据校验工具DataCheck校验源端、目标端的数据是否一致。 下载软件包后,解压DataCheck-*.zip包,进入DataCheck-*目录,即可使用。目录下各文件的使用说明参见表1。 配置工具包。 Windows环境下: 打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。Redshift源的配置参考下图: 图30 配置DataCheck 文件中的密码src.passwd和dws.passwd可使用工具,执行以下命令生成密文。 encryption.bat password 运行成功后会在本地bin目录下生成加密文件,如下图。 Linux环境下: 其他步骤相同。密文生成方法与上文中Window环境下的方法类似,命令为sh encryption.sh [password]。 执行数据校验。 Windows环境下: 打开check_input.xlsx文件,将要校验的Schema、数据库、源表、目标端表填入,Row Range可根据需要填写特定范围的数据查询语句。 源端的库名在配置文件中配置后,check_input.xlsx文件中的源端会默认填写配置文件中的库名,若check_input.xlsx文件中填入其他库名,以check_input.xlsx文件中的优先级为高。 校验级别Check Strategy支持high、middle、low三种,若未填写,默认为low。 校验模式Check mode支持statistics,即统计值校验。 下图为元数据对比的check_input.xlsx文件。 图31 check_input.xlsx 在bin目录下使用命令datacheck.bat执行校验工具: 查看已生成的校验结果 check_input_result.xlsx: 下图为源端元数据与目标端一致的结果。 下图为源端元数据与目标端不一致的结果。 统计值校验参考下图。 Linux环境下: 编辑check_input.xlsx文件并上传,参考Window环境下的第一步。 使用命令sh datacheck.sh执行校验工具。 查看校验结果check_input_result.xlsx(校验结果分析与Windows场景相同)。
  • 了解Kettle Kettle是一个开源的ETL(Extract-Transform-Load)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。它提供了一个可视化的图形化界面,使用户能够通过拖放和连接组件来设计和配置ETL流程。支持多种数据源和目标,包括关系型数据库、文件、API、Hadoop等。Kettle提供了丰富的转换和清洗功能,可以对数据进行格式转换、数据过滤、数据合并、数据计算等操作。 它的主要功能如下: 无代码拖拽式构建数据管道。 多数据源对接。 数据管道可视化。· 模板化开发数据管道。 可视化计划任务。 深度Hadoop支持。 DWS需要绑定公网IP后才能与Kettle连接使用。 Kettle和 云数据迁移 (Cloud Data Migration,简称CDM)都适用于批处理场景,当数据量或表数量较小时,推荐使用kettle,反之使用CDM。 支持从数据库导出数据到文件,也支持将数据导入到数据库。 Kettle可通过建立触发器、时间戳字段、Kafka等方式实现数据实时同步。 本实践预计时长90分钟,演示迁移Redshift的基本流程如下: 迁移前准备:准备迁移工具Kettle和相关套件包。 步骤一:元数据迁移:使用DSC工具进行迁移。 步骤二:部署Kettle工具:配置Kettle工具。 步骤三:新建Transformation并配置源端数据库和目标数据库:创建一个transformation任务,配置好源端和目标端数据库。 步骤四:迁移数据:包括全量迁移、增量迁移。 步骤五:并发执行迁移作业:创建一个job,用于并发执行多个transformation任务,达到并发迁移多张表的目的。 步骤六:优化迁移作业:通过调整Kettle内存大小和Job的任务数量,提高迁移效率。 步骤七:表数据校验:迁移后数据一致性验证。
  • 迁移前准备 已经购买了GaussDB(DWS)集群,并已绑定弹性公网IP,并已规划创建好目标数据库dws_vd。 已获取DSC工具包,下载并安装DSC。 已获取DataCheck工具包,下载并安装DataCheck。 已获取Kettle工具包,下载地址(本文以9.4.0.0-343版本为例)。 已安装JDK 1.8环境,并配置相关环境变量。 已获取Kettle工具套件。工具包中包括DWS驱动包、Redshift驱动包、plugin文件夹。 图1 Kettle工具套件
  • 步骤四:迁移数据 全量数据迁移 右键编辑Table input,数据库选择源端数据库连接。 图16 编辑Table input 右键编辑DWS TableOutput,数据库选择目的端数据库连接。勾选Turncate table、Specify database fields,同时选择Database fields下的Get fields获取源端和目的端的字段映射连接,单击OK。 图17 编辑Table output 图18 编辑Database fields 配置好后单击Run,开始执行迁移任务。 图19 执行Run 增量数据迁移 增量迁移和全量迁移的步骤大致相同,区别在于源端SQL中增加了where条件,目的端配置去掉了勾选Truncate table。 右键编辑Table input,数据库选择源端数据库连接。 图20 编辑Table input 右键编辑DWS TableOutput,数据库选择目的端数据库连接。去勾选Truncate table,同时选择Database fields 下的Get fields获取源端和目的端的字段映射连接,单击OK。 图21 编辑TableOutput 配置好后单击Run,开始执行迁移任务。 图22 执行Run
  • 步骤一:元数据迁移 使用华为云自研工具DSC迁移,将Redshift中客户源端导出的样例表的DDL语句转成DWS中可执行的SQL。 解压获取到的DSC工具包,将需要转换的文件放入DSC的input目录下。 Redshift表结构设计中不含索引,影响性能的关键点取决于DDL中的数据分布键DISTSTYLE和排序键SORTKEY。 图2 DDL语句 自定义配置features-pg.properties文件。 图3 features-pg.properties文件 进入到DSC对应目录下,执行runDSC脚本。Windows环境下双击runDSC.bat。(Linux环境下执行runDSC.sh。) 执行以下命令进行语法转换。 1 runDSC.bat -S postgres 图4 DSC转换 查看结果及转换信息。 图5 转换结果 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。 DSC更多内容请参见DSC工具使用指导。
  • 步骤六:优化迁移作业 配置Kettle内存。 为了增加Kettle并发数及缓存数据量大小,可以设置Kettle的内存大小。 用Notpad++打开Spoon.bat脚本,编辑内存相关内容,一般建议为主机内存的60%-80%,如下图所示。 图28 配置内存 配置Job。 当表数据量小于千万时,Job调度的表个数建议配置在10个左右。 对于相对大一点的表,例如1亿左右的数据,建议配置2~3个即可,这样配置,即使其中一个任务中途失败,也可以打开相应的转换任务,单独调度,提高效率。 对于数据量超过1亿以上的表,尤其是字段数特别多的表,Kettle抽取效率相对较慢,可以根据业务实际情况选择相应的迁移方式。 图29 配置Job 在配置任务的时候,尽量将表数据量大致相同的任务放到一个Job中,这样可以保证所有任务执行完成的时间大致相同,不会有拖尾任务,影响下一个job的执行。 如果任务出错,可以查看相应的报错日志,一般情况下遇到的都是源端连接限制导致断开的问题。遇到该情况,可以重启Kettle软件,重试即可。
  • 步骤四:通过外表导入DLI表数据 使用系统管理员dbadmin用户登录GaussDB(DWS)数据库,默认登录gaussdb数据库即可。 执行以下SQL创建外部Server。其中OBS终端节点从1获取,AK和SK从准备工作获取,DLI终端节点从2获取。 如果DWS和DLI是同一个账户创建下,则AK和SK分别对应重复填写一次。 1 2 3 4 5 6 7 8 9 CREATE SERVER dli_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( ADDRESS 'OBS终端节点', AC CES S_KEY 'AK值', SECRET_ACCESS_KEY 'SK值', TYPE 'DLI', DLI_ADDRESS 'DLI终端节点', DLI_ACCESS_KEY 'AK值', DLI_SECRET_ACCESS_KEY 'SK值' ); 执行以下SQL创建目标schema。 1 CREATE SCHEMA dws_data; 执行以下SQL创建外表。其中项目ID替换为3获取的实际值。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE FOREIGN TABLE dws_data.dli_pq_order ( order_id VARCHAR(14) PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_time TIMESTAMP, cust_code VARCHAR(6), pay_amount DOUBLE PRECISION, real_pay DOUBLE PRECISION ) SERVER dli_server OPTIONS ( FORMAT 'parquet', ENCODING 'utf8', DLI_PROJECT_ID '项目ID', DLI_DATABASE_NAME 'dli_data', DLI_TABLE_NAME 'dli_order') DISTRIBUTE BY roundrobin; 执行以下SQL,通过外表查询DLI的表数据。 结果显示,成功访问DLI表数据。 1 SELECT * FROM dws_data.dli_pq_order; 执行以下SQL,创建一张新的本地表,用于导入DLI表数据。 1 2 3 4 5 6 CREATE TABLE dws_data.dws_monthly_order ( order_month CHAR(8), cust_code VARCHAR(6), order_count INT, total_pay_amount DOUBLE PRECISION, total_real_pay DOUBLE PRECISION ); 执行以下SQL,查询出2023年的月度订单明细,并将结果导入DWS表。 1 2 3 4 5 6 7 8 INSERT INTO dws_data.dws_monthly_order ( order_month, cust_code, order_count , total_pay_amount, total_real_pay ) SELECT TO_CHAR(order_time, 'MON-YYYY'), cust_code, COUNT(*) , SUM(pay_amount), SUM(real_pay) FROM dws_data.dli_pq_order WHERE DATE_PART('Year', order_time) = 2023 GROUP BY TO_CHAR(order_time, 'MON-YYYY'), cust_code; 执行以下SQL查询表数据。 结果显示,DLI表数据成功导入DWS数据库。 1 SELECT * FROM dws_data.dws_monthly_order;
  • 步骤三:获取GaussDB(DWS)外部服务器所需鉴权信息 获取OBS桶的终端节点。 登录OBS管理控制台。 单击桶名称,左侧选择“概览”,并记录终端节点。 访问终端节点获取DLI的终端节点。 本例(华北-北京四)为dli.cn-north-4.myhuaweicloud.com。 获取创建DLI所使用的账号的特定区域的项目ID。 鼠标悬浮在右上方的账户名,单击“我的凭证”。 左侧选择“API凭证”。 从列表中,找到DLI所属区域,本例为华北-北京四,记录区 域名 所在的项目ID。 获取账号的AK和SK,参见准备工作。
  • 场景介绍 GaussDB(DWS)使用对象标识符(oid)来保存对象之间的引用关系,这使得视图在定义的时候就绑定了其依赖的数据库对象的oid,不管视图名称怎么改变,都不会改变这层依赖关系。如果要对基表进行一些字段修改,会因为与视图字段存在强绑定而报错。如果要删除某个表字段或整个表,就需要连同其关联的视图一起使用cascade关键字删除,表字段删除完成或表重建后再依次重建各级视图,给用户的使用增加了很大的工作量,导致易用性较差。 为了解决这一问题,GaussDB(DWS)在8.1.0集群版本实现了视图的解耦,使得存在视图依赖的基表或其他数据库对象(视图、同义词、函数、表字段)可以单独删除,而其对应对象上关联的依赖视图依然存在,而在基表重建后,可以通过ALTER VIEW REBUILD命令重建依赖关系。而8.1.1集群版本在此基础上又实现了自动重建,可以无感知自动重建依赖关系,开启自动重建后会有锁冲突,因此不建议用户开启自动重建。8.2.1.200集群版本在此基础上取消了无感知自动重建,改为本地自动重建,即视图自动重建后未更新系统表,此时,无效视图仍旧无效,但是无效视图依然可以进行DML操作,如果需要将视图元数据刷新为有效状态,依然需要执行ALTER VIEW REBUILD操作。
  • 修改配置文件 编辑resources目录下的application.yml文件,修改actuator相关的配置来暴露Prometheus格式的指标数据。 management: endpoints: web: exposure: include: prometheus 配置完成后,此springboot项目可以通过/actuator/prometheus路径,9090端口暴露出Prometheus格式的监控指标。
  • 在springboot项目中自定义监控指标 定义一个Counter类型的指标,每次前端单击时调用后端api,就自增1。 src\main\java\com\huawei\cae\controller\UserDataController.java中,定义如下字段和方法,并import所需类: 作用是定义了一个Counter类型的监控指标,名为"click_operated_total"。 import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; import javax.annotation.PostConstruct; ... @Autowired private MeterRegistry registry; private Counter visitCounter; @PostConstruct private void init() { visitCounter = registry.counter("click_operated_total", "click_operated_total",""); } 在前端调用访问的方法clientTest()第一行,添加如下代码: visitCounter.increment(); 这样,当每次访问该方法时,上面定义的“click_operated_total”就会增加1。 修改后的项目即可部署在CAE上,并监控自定义的Prometheus指标。
  • 配置访问方式后,为什么实例异常了? CAE 从环境外部访问本组件-负载均衡配置默认开启后端服务TCP健康检查,实质是进行TCP三次握手,正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致您的组件认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下: 关闭访问方式健康检查。 采用HTTP健康检查。 业务代码中忽略健康检查的连接错误。 图1 配置负载均衡访问方式的健康检查 父主题: 组件配置类
  • 验证VPC访问IP绑定 当已经成功添加域名配置后,如图1 域名配置,可以使用与CAE环境所属VPC相同的E CS 访问,检查域名是否与VPC访问IP绑定。 图4 域名配置 登录ECS控制台,选择“弹性云服务器”。 在弹性云服务器列表中,选择连接到同一VPC下的ECS。 图5 选择同一VPC下的ECS(此处用vpc-demotest2演示) 从ECS上ping该内网域名(test18.com),验证网络是否连通。 从ECS上使用wget命令访问内网域名(test18.com),验证组件是否正常运行。
  • 操作步骤 脚本报错,通常来说是用户侧问题。 用户自行修改了脚本,需要先核对脚本。 用户没有填写必填参数。 脚本分为软件包部署场景和镜像部署场景,用户填写场景错误。 咨询客户是否自行修改脚本内容,并核对脚本内容。 核对用户必填参数是否已经填写,并且场景正确。 其他场景导致的脚本执行后报错,比如脚本报CAE格式校验错误。 运行脚本的时候,加入参数 -x 。 bash -x deploy.sh 检查脚本信息,并检查是否符合预期。 修改脚本,重新运行即可。
  • 使用场景 服务网关是网格的流量入口,网格外部的客户端通过服务网关访问网格内的服务。目前默认是基于Kubernetes Gateway API模型实现网关能力,网格服务详情中的灰度发布策略只适用于东西向网格内部服务间;对于南北向入口网关的目标服务,如果需要配置灰度发布策略,可参考下文为入口网关的目标服务配置灰度发布策略。 东西向网格内部服务间灰度发布,使用的是Istio的VirtualService/DestinationRule模型,依赖DestinationRulesubsets 来定义服务的版本。 南北向入口网关的目标服务灰度发布,使用的是Kubernetes Gateway API的后端服务定义(backend service definitions),依赖定义多个service来定义服务的版本。
  • 操作步骤 创建nginx-v1服务 进入CCE Console页面,单击在网格已添加的CCE集群名称进入集群详情页,单击“服务-服务”,选择对应命名空间,单击“创建服务”按钮。 参数填写说明: Service名称:自定义服务名称,例如nginx-v1。 访问类型:选择集群内访问。 选择器:单击“引用负载标签”,选择对应的工作负载,例如nginx。 端口配置:容器端口填写业务容器进程监听端口,例如80。服务端口填写通过service访问的端口,例如5566。 创建nginx-v2服务 参考步骤1创建nginx-v2服务。 创建基于流量比例的路由 进入华为云UCS控制台,依次单击“服务网格-要配置的网格名称-服务网关-网关路由-HTTP路由-YAML创建”。 使用以下内容,创建nginx-canary网关路由。 apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: nginx-canary # 网关路由名 namespace: whtest # 网关路由所在的命名空间 spec: parentRefs: - group: gateway.networking.k8s.io kind: Gateway name: gwtest1 # 网关名 namespace: whtest # 网关所在的命名空间 rules: - backendRefs: - group: '' kind: Service name: nginx-v1 # nginx-v1服务的服务名 port: 5566 # nginx-v1服务的服务端口 weight: 30 # nginx-v1服务的流量比例 - group: '' kind: Service name: nginx-v2 # nginx-v2的服务名 port: 5566 # nginx-v2服务的端口 weight: 70 # nginx-v2服务的流量比例 matches: - path: type: PathPrefix value: / 该配置表示路由规则引用whtest命名空间下名为gwtest1的Gateway资源。因为未指定监听器名称,此处会尝试引用该Gateway的所有监听器。对于路径前缀为/的请求,将30%流量路由到同命名空间下的nginx-v1服务的5566端口,将70%流量路由到同命名空间下的nginx-v2服务的5566端口。 验证基于流量比例的路由生效 等待几秒钟待新规则配置下发成功,通过网关访问目标服务nginx应用,查看路由规则是否生效。 查看方法如下: 在浏览器中输入地址 http://$GATEWAY_ELB_IP:$GATEWAY_PORT/ ,其中, $GATEWAY_ELB_IP 是路由引用的whtest命名空间下名为gwtest1的网关的负载均衡公网地址; $GATEWAY_PORT是gwtest1网关的监听器对外端口。 预期结果: 反复多次刷新浏览器,约有70%的时间可以看到v2版本的nginx服务内容。
  • 操作步骤 执行以下命令打开kube-state-metrics工作负载对应的YAML文件。 kubectl edit deployment kube-state-metrics -nmonitoring 修改kube-state-metrics的启动参数。 例如需要采集Pod的所有labels时,则将kube-state-metrics的启动参数修改为: --metric-labels-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone] kube-state-metrics将开始采集Pod和Node的labels指标,并通过kubectl edit servicemonitor kube-state-metrics -nmonitoring查询kube_pod_labels是否在普罗的采集任务中。 如需采集annotation,则在启动参数中以相同方法添加参数--metric-annotations-allowlist。 参考文档:https://github.com/kubernetes/kube-state-metrics/blob/v2.2.3/docs/cli-arguments.md
  • 问题描述 kube-prometheus-stack插件的kube-state-metrics组件负责将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。kube-state-metrics组件在默认配置下,不采集K8s资源的所有labels和annotation。如需采集则需要在启动参数中修改采集配置,并同时检查名称为kube-state-metrics的ServiceMonitor中采集白名单是否添加相应指标。
  • 问题描述 etcd kubernetes容器无法拉起,执行journalctl -u containerd查看containerd日志,看到以下日志: applying cgroup configuration for process caused \\\"mountpoint for cgroup not found\\\"\"\n 使用stat -fc %T /sys/fs/cgroup/查看cgroup版本为cgroup2fs,该问题根因为当前kubernetes版本cgroup v2暂未商用,需要进行cgroup降级。
  • 操作步骤 修改“/etc/default/grub”文件的GRUB_CMDLINE_LINUX配置项,添加systemd.unified_cgroup_hierarchy=no,关闭cgroup v2。 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 systemd.unified_cgroup_hierarchy=no" 使用sudo grub-mkconfig -o /boot/grub/grub.cfg命令重新生成引导。 执行reboot重启机器。
  • 解决方案 管理员需要为用户授予UCS控制台各功能的权限,通过 IAM 系统策略(包括UCS FullAccess、UCS CommonOperations、UCS CIAOperations和UCS ReadOnlyAccess)来界定用户的权限范围。 表1 UCS系统权限 系统角色/策略名称 描述 类别 UCS FullAccess UCS服务管理员权限,拥有该权限的用户拥有服务的所有权限(包含制定权限策略、安全策略等)。 系统策略 UCS CommonOperations UCS服务基本操作权限,拥有该权限的用户可以执行创建工作负载、流量分发等操作。 系统策略 UCS CIAOperations UCS服务容器智能分析管理员权限。 系统策略 UCS ReadOnlyAccess UCS服务只读权限(除容器智能分析只读权限)。 系统策略 另外,华为云各服务之间存在业务交互关系,UCS也依赖其他云服务实现一些功能(如镜像仓库、域名解析),因此,上述几种系统策略经常和其他云服务的角色或策略结合使用,以达到精细化授权的目的。管理员在为IAM用户授权时,应该遵循权限最小化的安全实践原则,表2列举了UCS各功能管理员、操作、只读权限所需要的最小权限。 授予用户IAM系统策略的详细操作请参见UCS服务资源权限;授予用户UCS RBAC权限的详细操作请参见集群中Kubernetes资源权限。 表2 UCS功能所需的最小权限 功能 权限类型 权限范围 最小权限 容器舰队 管理员权限 创建、删除舰队 注册华为云集群(CCE集群、 CCE Turbo 集群)、本地集群或附着集群 注销集群 将集群加入、移出舰队 为集群或舰队添加权限 开通集群联邦、联邦管理相关操作(如创建联邦工作负载、创建域名访问等) UCS FullAccess 只读权限 查询集群、舰队的列表或详情 UCS ReadOnlyAccess 华为云集群 管理员权限 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess + CCE Administrator 操作权限 对华为云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + CCE Administrator 只读权限 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + CCE Administrator 本地/附着/多云/伙伴云集群 管理员权限 本地/附着/多云/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess 操作权限 本地/附着/多云/伙伴云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + UCS RBAC权限(需要包含namespaces资源对象的list权限) 只读权限 本地/附着/多云/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + UCS RBAC权限(需要包含namespaces资源对象的list权限) 镜像仓库 管理员权限 容器镜像服务 的所有权限,包括创建组织、上传镜像、查看镜像列表或详情、下载镜像等操作。 SWR Administrator 权限管理 管理员权限 创建、删除权限 查看权限列表或详情 说明: 创建权限需要同时授予子用户IAM ReadOnlyAccess权限(IAM服务的只读权限),用于获取IAM用户列表。 UCS FullAccess + IAM ReadOnlyAccess 只读权限 查看权限列表或详情 UCS ReadOnlyAccess + IAM ReadOnlyAccess 策略中心 管理员权限 启用策略中心 创建、停用策略实例 查看策略列表 查看策略实施详情 UCS FullAccess 只读权限 对于已启用策略中心的舰队和集群,拥有该权限的用户可以查看策略列表和查看策略实施详情。 UCS CommonOperations 或 UCS ReadOnlyAccess 服务网格 管理员权限 应用服务网格的所有权限,包括创建网格、添加集群、sidecar注入、查看网格列表或详情、卸载网格等。 UCS FullAccess + CCE Administrator 流量分发 管理员权限 创建流量策略、暂停调度策略、删除调度策略等操作。 (推荐)UCS CommonOperations + DNS Administrator 或 UCS FullAccess + DNS Administrator 只读权限 查看流量策略列表或详情 UCS ReadOnlyAccess + DNS Administrator 容器智能分析 管理员权限 接入、取消接入集群 查看基础设施、应用负载等多维度监控数据 UCS CIAOperations 云原生服务中心 管理员权限 云原生服务中心的所有权限,包括订阅服务、查看服务列表或详情、创建服务实例、查看实例列表或详情、删除服务实例、退订服务等操作。 UCS FullAccess 只读权限 云原生服务中心的只读权限,包括查看服务列表或详情、查看实例列表或详情等操作。 UCS ReadOnlyAccess
  • 现象一:提示clusterrole、clusterrolebinding已存在 问题原因:一个集群不能同时加入两个或两个以上的联邦。有这个报错提示,说明当前集群已经添加到联邦中,或者曾经加入过联邦但是存在资源残留。 解决方案:手工清理残留资源。 操作步骤: 获取报错集群的kubeconfig配置文件,并准备kubectl及运行节点,将kubeconfig文件放在运行节点/tmp目录。 执行如下命令,清理残留资源。 alias kubectl='kubectl --kubeconfig=/tmp/kubeconfig' kubectl delete clusterrolebinding `kubectl get clusterrolebinding |grep karmada-controller-manager | awk '{print $1}'` kubectl delete clusterrole `kubectl get clusterrole |grep karmada-controller-manager | awk '{print $1}'` kubectl delete namespace `kubectl get namespace |egrep 'karmada-[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' |awk '{print $1}'`
  • 现象三:CCE集群已绑定EIP,集群加入联邦仍失败,报错:network in cluster is unstable, please retry it later 问题原因:联邦需要访问CCE集群的5443端口,但是CCE集群的控制面安全组入方向规则不允许120.46.145.12(源地址)访问CCE集群的5443端口。 解决方案:修改CCE控制面入方向安全组,允许120.46.145.12(源地址)访问CCE集群的5443端口。
  • 现象四:显示已接入集群联邦,状态异常,报错:cluster is not reachable 请在对应的成员集群中执行以下命令,查询ServiceAccount是否存在。其中{cluster_name}请替换为集群名称。 kubectl get sa -A|grep karmada-{cluster_name}.clusterspace.{cluster_name} 若回显显示ServiceAccount不存在,请先将该成员集群移出舰队,再重新添加该集群至对应舰队。
  • 处理手段 可执行如下操作进行资源残留清理,并在清理后重新开启监控。 kubectl delete ns monitoring kubectl delete ClusterRole cluster-problem-detector custom-metrics-resource-aggregated-reader event-exporter prometheus-operator prometheus-server ucsaddon-cie-collector-kube-state-metrics kubectl delete ClusterRoleBinding ucsaddon-cie-collector-kube-state-metrics cluster-problem-detector event-exporter prometheus-operator prometheus-server kubectl delete apiservice v1beta1.custom.metrics.k8s.io
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全