华为云用户手册

  • 响应示例 { "server": { "tenant_id": "7910a6e50b80402ba028c8d96c1b31fe", "image": "", "accessIPv4": "", "addresses": { "03be5c1e-e05d-4905-a105-c3bd9b730bdc": [ { "addr": "192.168.0.72", "version": 4 } ] }, "metadata": {}, "accessIPv6": "", "created": "2018-05-17T03:15:48Z", "hostId": "7dc82f6b1d406200fc63e395cf4829cbffcb49de0e9c75c5773f201f", "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/7910a6e50b80402ba028c8d96c1b31fe/flavors/c3.1U1G" } ], "id": "c3.1U1G" }, "OS-DCF:diskConfig": "MANUAL", "user_id": "d698a78532ca430f8daec1858f2b500e", "name": "new-server-test", "progress": 0, "links": [ { "rel": "self", "href": "https://None/v2/7910a6e50b80402ba028c8d96c1b31fe/servers/1a19ef4f-be0a-4526-bf2f-14b4464d536a" }, { "rel": "bookmark", "href": "https://None/7910a6e50b80402ba028c8d96c1b31fe/servers/1a19ef4f-be0a-4526-bf2f-14b4464d536a" } ], "id": "1a19ef4f-be0a-4526-bf2f-14b4464d536a", "updated": "2018-05-21T00:36:27Z", "status": "ACTIVE" } }
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 是否必选 参数类型 描述 server 是 Object 云服务器数据结构,详情请参见表3 表3 server字段数据结构说明 参数 是否必选 参数类型 描述 name 否 String 修改后的云服务器名称,字符长度范围为1-255。 description 否 String 对弹性云服务器的任意描述,最大255字节。 微版本2.19及以上版本支持。
  • 响应示例 响应示例请参见 响应(批量操作类)所示。 { "response": [ { "id": "616fb98f-46ca-475e-917e-2563e5a8cd19" }, { "id": "516fb98f-46ca-475e-917e-2563e5a8cd12" } ] }
  • 请求示例 批量修改ID为“260a0917-f7df-4b25-93ac-950da6c6b5d6”和“f6d8df1a-e257-48e2-b617-1dd92ced8c20”的云服务器的名称为“new-server-name”。 PUT https://{endpoint}/v1/{project_id}/cloudservers/server-name { "name": "new-server-name", "dry_run": false, "servers": [ { "id":"260a0917-f7df-4b25-93ac-950da6c6b5d6" }, { "id":"f6d8df1a-e257-48e2-b617-1dd92ced8c20" } ] }
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 参数类型 是否必选 描述 name String 是 弹性云服务器修改后的名称。 规则如下: 只能由中文字符、英文字母、数字及“_”、“-”、“.”组成,且长度为[1-128]个英文字符或[1-64]个中文字符。 批量修改弹性云服务器名称时,名不会自动按序增加数字尾缀。例如: 三个ECS的名称为test_0001,test_0002,test_0003,批量修改弹性云服务器名称为develop,则修改后3个弹性云服务器名称为develop,develop,develop。 dry_run Boolean 否 是否只预检此次请求。 true:发送检查请求,不会修改云服务器名称。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回正常响应信息。 响应结构请参见 7.5.1 响应 所示。 false:发送正常请求,通过检查后并且执行修改云服务器名称的请求。 默认值:false servers Array of objects 是 待修改的弹性云服务器ID信息,详情请参见 表3。 表3 servers字段数据结构说明 参数 参数类型 是否必选 描述 id String 是 弹性云服务器ID。
  • 响应示例 { "server": { "tenant_id": "66c860cb130b465fbafcdee43fb09c64", "image": "", "accessIPv4": "", "addresses": { "01d7aef8-442b-408e-b82f-13afff51e4e4": [ { "addr": "192.168.26.22", "version": 4 } ] }, "metadata": { "virtual_env_type": "FusionCompute" }, "description": "", "accessIPv6": "", "created": "2019-04-25T11:52:53Z", "OS-EXT-SRV-ATTR:user_data": "", "hostId": "57d278e7c53d07cd34fad3ba4fdc9f3d779017d0879726d83b45a22a", "OS-EXT-SRV-ATTR:hostname": "new-test-hostname", "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/66c860cb130b465fbafcdee43fb09c64/flavors/s2.large.2" } ], "id": "s2.large.2" }, "OS-DCF:diskConfig": "MANUAL", "user_id": "f88581d53be64716a985c66ca28c75f6", "name": "new-test-hostname", "progress": 0, "links": [ { "rel": "self", "href": "https://None/v2/66c860cb130b465fbafcdee43fb09c64/servers/24930df0-db4c-4a8b-8914-d0bd558564b0" }, { "rel": "bookmark", "href": "https://None/66c860cb130b465fbafcdee43fb09c64/servers/24930df0-db4c-4a8b-8914-d0bd558564b0" } ], "id": "24930df0-db4c-4a8b-8914-d0bd558564b0", "updated": "2019-04-28T08:15:36Z", "status": "ACTIVE" } }
  • 什么是数字资产链 数字资产链(Digital Asset Chain,简称DAC)是华为云自研的数字资产链平台,基于华为云区块链引擎,可实现数字资产的确权、可信保存、安全交易。 数字资产链的使用方式分为两种:共享版和专享版。 共享版与专享版的区别与联系如下: 共享版的用户共用一条数字资产链,在同一条数字资产链上进行资产交易活动。开通共享版数字资产链请参考开通共享版。 专享版针对不同资产交易业务可创建多个单独非共享的数字资产链,各业务间互不干扰,业务的专业性更强。购买专享版数字资产链请参考创建数字资产链。 购买专享版数字资产链节点后,默认按需计费,可选择是否购买套餐包进行抵扣; 开通共享版数字资产链后,必须购买套餐包才支持调用。详细费用和购买套餐包方法请参考计费说明和购买套餐包。 共享版和专享版可同时购买使用。 当前仅“华北-北京四”区域支持数字资产链。 父主题: 数字资产链
  • DAC权限 默认情况下,新建的IAM用户没有任何权限,您需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DAC部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DAC时,需要先切换至授权区域。 如下表所示,包括了DAC的所有系统权限。 表1 DAC系统权限 系统权限 权限描述 权限类别 Tenant Administrator 全部云服务管理员(除IAM管理权限) 系统角色 Tenant Guest 全部云服务只读权限(除IAM权限) 系统角色
  • 计费说明 数字资产链的费用包含以下两项: 表1 计费说明 计费项 收费标准 说明 开通共享版 免费。 开通前需进行企业认证。 购买专享版数字资产链节点 包年包月(节点)4个数字资产链节点15,000元/月。 购买专享版数字资产链扣除的包年包月费用。 调用次数 按需计费 共享版 未购买套餐包,不支持调用。 购买套餐包后,使用超出部分按需扣费,3元/次。 专享版 2元/次。 共享版未购买套餐包,暂不支持调用。套餐包到期或者用完后,会有5分钟业务连续性保护,此时按需计费。 说明: 当套餐包余额不足以支付当前调用时,调用会失败。系统会提示用户及时续费,此时请您续费后再执行调用操作。 购买共享版套餐包后,由于系统内部机制限制,会有5分钟左右的延迟,所以购买或续费套餐包后请等待5分钟后再开始调用。 专享版已购买数字资产链但未购买套餐包,此时按需计费。 说明: 调用次数单独计费,该费用不包含在购买数字资产链的费用中。 套餐包计费 支持以下几种规格: 共享版 100次/月套餐包为200元 1万次/年套餐包为15,000元 10万次/年套餐包为130,000元 50万次/年套餐包为500,000元 专享版 1万次/年套餐包为12,000元 10万次/年套餐包为100,000元 50万次/年套餐包为400,000元 购买套餐包后,先扣除已经购买的套餐包额度,超出部分按使用次数进行按需计费。 共享版 以下接口会扣除调用次数,其余接口不扣除调用次数。 租户下的资产首次发生所有权转移后(包括转移数字资产所有权、加入可组合资产、拆分子资产给用户、拆分子资产给其它可组合资产操作)计入1次费用,随后该资产的转移次数计入租户的调用量池,调用量池中的全局资产每小时(每天北京时间00:00起算)统计转移次数,每5次计1次,不满5次的部分算1次。 创建数字资产集合 修改集合信息 铸造数字资产 销毁数字资产 监管者注销数字资产 转移数字资产所有权 设置数字资产授权用户 设置集合级授权用户 批量铸造数字资产(每100个计1次,不满100的部分算1次,例如,铸造4180个算42次) 批量转移数字资产所有权(每100个计1次,不满100的部分算1次,例如,流转4180个算42次) 设置用户级授权用户 设置资产流转限制 铸造可组合资产 加入可组合资产 拆分子资产给用户 拆分子资产给其它可组合资产 数字资产链存储增强(租户上传一次计一次费,每上传一次可免费下载200次,超过200次后每200次扣一次调用次数。) 专享版 专享版数字资产链开通合约模板后,将会统计每小时专享版收费接口次数,每5次接口调用计1次套餐包用量,不满5次的部分算1次套餐包用量。 专享版数字资产链未开通合约模板,按次数收费。 以下接口会扣除调用次数,其余接口不扣除调用次数。 铸造数字资产 批量铸造数字资产 转移数字资产所有权 批量转移数字资产所有权 铸造可组合资产 加入可组合资产 拆分子资产给用户 拆分子资产给其它可组合资产 版权存证接口 父主题: 数字资产链
  • 数字资产版权保护 数字资产版权保护服务是由华为和中国版权保护中心合作,按照《中华人民共和国著作权法》、“数字版权唯一标识符”标准及相关规定,利用区块链和大数据、人工智能等技术,对数字资产版权进行保护,登记成功的版权信息和版权权属确认信息将会保存在区块链中,保证所有的版权信息可信、可回溯。 图1 数字资产版权保护 便捷接入:支持多语言SDK接入数字资产版权保护服务,支持图片、文章、视频、音频等形式的原创数字作品的版权保护。 高效率确权:由用户发起,利用大数据等技术对数字作品信息和权属信息进行校验。数字版权登记成功后,可获得由中国版权保护中心分配的数字版权唯一标识符。 清晰化授权:面向三方内容版权交易平台,开放授权发码上链(授权范围、时长等)、权属查询等能力,使版权交易流转过程更清晰可循,更具公信力。 标准化维权:利用爬虫及大数据技术为互联网法院、版权纠纷处理中心、律师、内容平台提供侵权监测、证据固证、版权鉴定等能力,快速解决版权纠。
  • 数字资产存储能力增强,且具备内容审核能力 多语言SDK提供丰富的资产存储管理接口,支持图片、视频、音频、3D模型、文本等富媒体的一键存储。安全、高可靠、类型丰富,无需考虑容量限制。 基于深度学习和大样本库的内容审核能力,支持对图片、文本、视频进行涉黄、广告、涉暴等内容的自动检测,帮助客户降低业务违规风险。 CND全球稳定加速,将数字资产对应富媒体内容分发至靠近用户的加速节点,使用户可以就近获得所需的内容,提高用户访问的响应速度,提升业务使用体验。 图2 数字资产存储能力增强
  • 产品功能 数字资产链服务支持以下功能: 表1 功能说明 规格 功能 说明 共享版 业务调用 通过SDK完成数字资产链的业务调用。 服务运营 查看API调用的统计监控,实时查看数字资产链实例的API调用、数字资产集合、数字资产发行、数字资产流转等相关数据。请参见图1。 资产检索 通过资产编码查看资产及资产所在集合的相关信息以及流转记录,如资产编码、集合名称、集合缩写、资产名称、资产类型、资产所有者地址、资产铸造者地址、铸造时间、转移时间、所在区块高度、交易hash值、销毁时间、销毁hash值等。请参见图2和图3。 说明: 销毁的资产,检索时不展示资产信息,只展示流转记录。 图中数据为测试数据,仅供参考。 数字资产浏览器 数字资产共享版浏览器,支持用户在未登录的情况下,查看共享版区块链中数字资产总发行数量、数字资产总流转次数、区块高度、总交易数等信息。同时也可以根据资产编码、交易哈希、区块哈希等值搜索对应数字资产详细信息、区块信息、交易信息以及流转记录等。请参见图4。 专享版 链管理 实时查看数字资产链实例运行状况,对实例做相应的操作。请参见图5。 单击实例名称可以查看实例的节点资源、网络分布及查询区块和交易信息。 资产管理 实时查看数字资产链实例的API调用、数字资产集合、数字资产发行、数字资产流转等相关数据。请参见图6。 合约仓库 统一展示和管理合约模板能力。请参见图7。 图1 共享版服务运营 图2 正常资产检索信息及流转记录 图3 销毁资产检索流转记录 图4 数字资产浏览器 图5 链概览 图6 专享版服务运营 图7 合约仓库 父主题: 数字资产链
  • 创建用户并授权使用DAC 如果您需要对您所拥有的DAC进行精细的权限管理,您可以使用统一身份认证服务(Identity and Access Management,简称IAM),通过IAM,您可以: 根据企业的业务组织,在您的华为账号中,给企业中不同职能部门的员工创建IAM用户,让员工拥有唯一安全凭证,并使用DAC资源。 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。 将DAC资源委托给更专业、高效的其他华为账号或者云服务,这些账号或者云服务可以根据权限进行代运维。 如果华为账号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章节,不影响您使用DAC服务的其它功能。 本章节为您介绍对用户授权的方法,操作流程如图1所示。 前提条件 给用户组授权之前,请您了解用户组可以添加的DAC权限,并结合实际需求进行选择,DAC支持的系统权限,请参见:DAC系统权限。若您需要对除DAC之外的其它服务授权,IAM支持服务的所有权限请参见系统权限。 示例流程 图1 给用户授权服务权限流程 创建用户组并授权 在IAM控制台创建用户组,并授予数字资产链服务权限“Tenant Administrator”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限。 父主题: 权限管理
  • 操作步骤 登录DAC管理控制台,在页面左上方选择区域。 单击左侧导航栏的“套餐包管理”。 在“套餐包管理”页面查看套餐包详情。 图1 套餐包统计 在“套餐包统计”栏,可通过饼状图查看您当前有效套餐包的总量,已使用量及剩余可调用量,左侧显示数字资产共享版/可信存证总次数的数据,右侧显示数字资产专享版总次数的数据,显示数值与实际使用数据存在15分钟左右延迟,仅供业务参考。 在“套餐包详情”栏,可查看您购买过的套餐包的规格、状态、剩余量/总量、生效时间和到期时间。显示数值与实际使用数据存在约1小时延迟,与费用中心的实际账单一致。 单击,可刷新套餐包详情数据。
  • 入门指引 数字资产链提供创建数字资产链、发起数字资产交易等功能。DAC服务的使用流程如下所示。 当前仅“华北-北京四”区域支持数字资产链服务。 图1 专享版使用流程 创建数字资产链 创建数字资产链,配置链基本参数。 购买套餐包 购买专享版套餐包,体验专享版资产链。 应用开发 下载链实例对应SDK配置和证书进行资产链对接。 发起数字资产交易 通过接口触发数字资产发行、流转,并记录到区块中。 浏览交易信息 查看数字资产链的区块、交易等信息。 父主题: 数字资产专享版
  • 调用示例 // 触控数据结构体 struct InputTouch { uint8_t pointerID; uint8_t orientation; uint8_t action; uint16_t pressure; uint16_t touchX; uint16_t touchY; uint16_t physicalWidth; uint16_t physicalHeight; int32_t touchTime; uint8_t reserved[16]; // 保留字段 }; InputTouch inputTouch; inputTouch.pointerID = 0; inputTouch.orientation = 0; inputTouch.action = 0; // ACTION_DOWN inputTouch.pressure = 129; inputTouch.physicalWidth = 720; inputTouch.physicalHeight = 1280; inputTouch.touchX = 52; inputTouch.touchY = 157; inputTouch.touchTime = 0; int ret = InjectTouchData(inputTouch); //注意 要确保数据类型是本地字节序,数据来自网络则需要使用ntohl()方法进行本地字节序转换
  • 输入参数 表1 输入参数说明 参数名称 说明 inputTouch 触控注入参数结构体,详见表2。 表2 触控注入参数结构体说明 参数名称 参数类型 说明 pointerID number 真机触点编号,多指触控下会有多个触点,取值范围[0,9],即最多支持10个触点。 orientation number 真机屏幕旋转角度,默认为0,可设置为1(90°),2(180°), 3(270°)。 action number 真机触控行为,如ACTION_DOWN, ACTION_UP,取值范围请参考:https://developer.android.com/reference/android/view/MotionEvent pressure number 真机触控压力值,默认为129。 physicalWidth number 真机屏幕分辨率宽,默认为0,取值范围[0,2160]。 physicalHeight number 真机屏幕分辨率高,默认为0,取值范围[0,4096]。 touchX number 真机触点坐标,取值范围[0,physicalWidth]。 touchY number 真机触点坐标,取值范围[0,physicalHeight]。 touchTime number 真机触控时间与上一次ACTION_DOWN时间的偏移量。 真机端触控事件的采集方式,详见端云协同的端侧SDK开源代码:端云协同的端侧SDK。 真机端触控事件采集相关代码,请参考:onTouch方法。
  • 资源栈状态 资源栈管理包括两方面的能力,一是对资源栈进行生命周期管理,包括创建、更新、删除、查询等操作;二是对资源栈下的执行计划进行生命周期管理,包括执行计划的创建、删除、查询等操作。 资源栈生命周期中各状态说明如表1所示。 执行计划生命周期中各状态说明如表2所示。 表1 资源栈各个状态说明 资源栈状态 状态说明 创建成功,待部署 资源栈创建完成但是并未部署 正在部署 资源栈资源正在部署 部署成功 资源栈资源部署成功 部署失败 资源栈资源部署失败 正在删除 资源栈正在删除中 删除失败 资源栈删除失败 正在回滚 资源栈正在回滚中 回滚失败 资源栈回滚失败 回滚成功 资源栈回滚完成 表2 执行计划各个状态说明 执行计划状态 状态说明 创建中 执行计划创建中 创建失败 执行计划创建失败 创建成功,待部署 执行计划创建成功待部署 已执行部署 执行计划已执行部署 父主题: 入门
  • 条件(Condition) 条件键(Condition)是SCP生效的特定条件,包括条件键和运算符。 条件键表示SCP语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:全局条件键。 服务级条件键(前缀通常为服务缩写,如ecs:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个VPC终端节点发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,SCP才能生效。支持的运算符请参见:运算符。 ECS定义了以下可以在SCP的Condition元素中使用的条件键,您可以使用这些条件键进一步细化SCP语句应用的条件。 表4 ECS支持的服务级条件键 服务级条件键 类型 单值/多值 说明 ecs:imageID string 多值 根据请求参数中指定的镜像ID过滤访问。
  • 条件(Condition) 条件(Condition)是SCP生效的特定条件,包括条件键和运算符。 条件键表示SCP语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:全局条件键。 服务级条件键(前缀为服务缩写,如ram:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个VPC终端节点发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,SCP才能生效。支持的运算符请参见:运算符。 RAM定义了以下可以在SCP的Condition元素中使用的条件键,您可以使用这些条件键进一步细化SCP语句应用的条件。 表4 RAM支持的服务级条件键 服务级条件键 类型 单值/多值 说明 ram:RequestedResourceType string 多值 根据指定的资源类型过滤访问。 ram:ResourceUrn string 多值 根据具有指定URN的资源过滤访问。 ram:Principal string 多值 根据指定使用者的格式过滤访问。 ram:TargetOrgPaths string 多值 根据指定使用者所在的组织路径过滤访问。 ram:PermissionUrn string 单值 根据指定的权限URN过滤访问。 ram:ShareOwnerAccountId string 单值 根据拥有的资源共享的特定账户过滤访问。例如,您可以使用此条件键指定可以根据资源共享所有者的账户ID接受或拒绝资源共享邀请。 ram:AllowExternalPrincipals boolean 单值 按允许或者拒绝与外部使用者共享的资源共享过滤访问。例如,如果操作只能在允许与外部使用者共享的资源共享上执行,请指定true。外部使用者是指在其组织之外的账号。 ram:RequestedAllowExternalPrincipals boolean 单值 根据指定的allow_external_principals过滤访问。外部使用者是指在其组织之外的账号。
  • Secret资源文件配置说明 本章节主要介绍Secret类型的资源描述文件的配置示例。 例如现在有一个工作负载需要获取账号密码,可以通过Secret来实现: yaml文件格式 定义的Secret文件secret.yaml内容如下。其中Value需要用Base64,Base64编码方法请参见如何进行Base64编码。 apiVersion: v1 kind: Secret metadata: name: mysecret # secret的名称 namespace: default #命名空间,默认为default data: username: bXktdXNlcm5hbWUK #用户名,需要用Base64编码 password: ****** #需要用Base64编码 type: Opaque # type建议不要做修改 json文件格式 定义的Secret文件secret.json内容如下。 { "apiVersion": "v1", "kind": "Secret", "metadata": { "name": "mysecret", "namespace": "default" }, "data": { "username": "bXktdXNlcm5hbWUK", "password": "******" }, "type": "Opaque" }
  • 相关操作 密钥创建完成后,您还可以执行表2中的操作。 kube-system命名空间下的密钥资源不能通过控制台更新,也不能删除,只能查看。 表2 其他操作 操作 说明 编辑YAML 单击密钥名称后的“编辑YAML”,可编辑当前密钥的YAML文件。 更新密钥 选择需要更新的密钥名称,单击“更新”。 根据表1更改信息。 单击“确定”。 删除密钥 选择要删除的密钥,单击“删除”。 根据系统提示删除密钥。 批量删除密钥 勾选需要删除的密钥名称。 单击页面左上角的“批量删除”,删除勾选的密钥。 根据系统提示删除密钥。
  • 策略实例 策略实例用于告知Gatekeeper应执行哪个策略定义以及如何执行。策略实例的详细说明请参见官方文档。 下面是一个策略实例示例,该示例使用先前提到的K8sRequiredLabels策略定义,确保Gatekeeper在所有命名空间上强制执行指定的标签。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sRequiredLabels metadata: name: ns-must-have-gk spec: enforcementAction: deny match: kinds: - apiGroups: [""] kinds: ["Namespace"] parameters: labels: ["gatekeeper"] 改策略实例示例指定了使用“K8sRequiredLabels”策略定义并将执行策略的操作设置为“deny”,这意味着Gatekeeper将拒绝违反策略的请求。“match”部分限制了此策略实例仅适用于命名空间资源。“parameters”部分指定了必须存在于资源上的标签,本例中为“gatekeeper”。
  • 插件状态说明 kube-prometheus-stack和log-agent插件的状态说明如表1所示。部分状态将影响集群进行监控开启、监控配置修改和监控关闭操作,详见后续章节的约束与限制部分。 表1 插件状态说明 状态 说明 插件未安装 插件未安装 运行中 插件全部实例状态都在运行中,插件正常使用 安装中 插件正在安装中 升级中 插件正在更新中 回滚中 插件正在回滚中 回滚失败 插件回滚失败,可重试回滚或卸载后重新安装 删除中 插件正在删除中 部分就绪 插件下只有部分实例状态为运行中,插件部分功能可用 不可用 插件状态异常,插件不可使用。可单击插件名称查看实例异常事件 安装失败 插件安装失败,需要卸载后重新安装 升级失败 插件升级失败,可重试升级或卸载后重新安装 删除失败 插件删除失败,可重试卸载 未知 插件处于未知状态,需要卸载后重新安装
  • UCS权限类型 UCS权限管理是在IAM与Kubernetes的角色访问控制(RBAC)的能力基础上,打造的细粒度权限管理功能。支持UCS服务资源权限、集群中Kubernetes资源权限两种维度的权限控制,这两种权限针对的是不同类型的资源,在授权机制上也存在一些差异,具体如下: UCS服务资源权限:是基于IAM系统策略的授权。UCS服务资源包括容器舰队、集群、联邦实例等等,管理员可以针对用户的角色(如开发、运维)进行差异化授权,精细控制他们对UCS资源的使用范围。 集群中Kubernetes资源权限:是基于Kubernetes RBAC能力的授权,可授予针对集群内Kubernetes资源对象的细化权限,通过权限设置可以让不同的用户有操作不同Kubernetes资源对象(如工作负载、任务、服务等Kubernetes原生资源)的权限。 UCS的权限可以从使用的阶段来看,第一个阶段是创建和管理基础设施资源的权限,也就是拥有创建容器舰队、注册集群、开通集群联邦等操作的权限;第二个阶段是使用集群Kubernetes资源对象(如工作负载、服务等)的权限;第三个阶段是监控运维基础设施资源以及Kubernetes资源的权限。其中,第一个和第三个阶段属于UCS服务资源权限,在IAM控制台按照IAM系统策略的方式授予;第二个阶段属于集群中Kubernetes资源权限,由管理员在UCS控制台“权限管理”页面创建,并在“容器舰队”页面完成权限与特定舰队或集群的关联。
  • 基本概念说明 UCS权限管理包含如下基本概念,其关系如图3所示。 用户:由管理员账号在统一身份认证服务(IAM)中创建的用户,是云服务的使用人员,具有独立的身份凭证(密码和访问密钥),根据账号授予的权限使用资源。 用户组:用户组是用户的集合,IAM可以通过用户组功能实现用户的授权。您创建的IAM用户,加入特定用户组后,将具备对应用户组的权限。例如,管理员为用户组授予UCS FullAccess权限后,其中的用户将具备UCS服务的管理员权限。当某个用户加入多个用户组时,此用户同时拥有多个用户组的权限,即多个用户组权限的全集。 权限:由UCS管理员定义的某个或某些用户对集群中Kubernetes资源的操作范围,UCS预置了几个常用权限,包括管理员权限、只读权限、开发权限,同时也支持用户自定义权限。更多介绍请参见创建权限。 舰队:舰队是多个集群的集合,管理员可以使用舰队来实现关联集群的分类。舰队还可以实现多集群的统一管理,包括权限管理、安全策略、配置管理以及多集群编排等统一管理的能力。舰队与权限是多对多的关系,即一个权限可以关联多个舰队,一个舰队也可以关联多个权限。 图3 权限关系示意图
  • 操作步骤 方法一:从服务网格入口创建 登录UCS控制台,单击左侧导航栏中的“服务网格”,如果当前已有网格,请在网格列表页面右上角单击“创建网格”。 设置网格配置参数。 绑定容器舰队 绑定已有容器舰队。如果您还没有可选的容器舰队,请参考容器舰队,创建新的舰队。 区域 服务网格控制面组件所在的区域。 代理模式 配置代理模式 sidecar-proxy或node-proxy。两种代理模式详见网格代理。 VPC 舰队启用网格能力后,舰队内的集群通过asm-mesh-controller或asm-terrace插件向网格控制面组件进行服务同步、策略配置等。上述插件与网格控制面的连接通过VPCEP实现,为便于管理,将VPCEP实例创建在该VPC中,如图所示: 如图,对于枢纽VPC下的集群,可以直接连接到网格控制面;对于同region中VPC1下的集群,选择创建VPC对等连接,使得两个VPC之间网络互通;对于跨region中VPC2下的集群,需要使用云连接网络(CC)使两个VPC互通后,才能连接到网格控制面。 每个VPCEP实例将产生0.1元/小时成本。 Istio版本 网格支持的Istio版本,目前支持1.15版本。 (可选)设置可观测性配置。 应用指标 可选是否启用应用指标,应用指标开启后,可以在网格中构建服务访问指标、应用拓扑、服务健康和服务SLO定义。 访问日志 可选是否启用访问日志,访问日志开启后,可以在网格中查询到详细的服务间访问记录,定位每次访问异常。 目前暂不支持创建网格后再重新开启可观测性配置。 调用链 采样率:用于调用链生成的请求占全部请求的采样百分比。 选择使用服务:即选择调用链上报的服务后端。可选择“华为云APM”和“第三方Jaeger/Zipkin服务”,当选择“第三方Jaeger/Zipkin服务”时,需要配置“服务地址”和“服务端口”两个参数,即第三方调用链服务接收请求信息的地址和端口。 仅Istio 1.15及以上版本支持第三方调用链。 如果您要使用“第三方Jaeger/Zipkin服务”调用链,请先自行完成调用链服务的安装,也可参考Jaeger/Zipkin OSC插件安装进行安装。之后获取服务地址。 Jaeger和Zipkin的默认服务端口均为9411,如果安装的时候自定义了服务端口在配置“服务端口”时请填写实际的值。 参数设置完成之后,单击右下角“立即创建”,跳转至网格列表页。 服务网格创建成功后,舰队中的所有集群将会根据代理模式自动安装插件。sidecar代理自动安装asm-mesh-controller插件,node代理自动安装asm-terrace插件。 单击页面中“查看进度”,弹出的网格启用进度中显示:资源创建、环境准备、组件安装、舰队集群接入四个阶段任务信息。 图1 查看进度 方法二:从容器舰队入口创建 登录UCS控制台,单击左侧导航栏中的“容器舰队”。 单击容器舰队名称,进入容器舰队详情页。 单击左侧导航栏中的“服务网格”。 单击页面中的“启用网格”,根据上文步骤二,配置网格参数。 参数设置完成之后,单击右下角“立即创建”。 单击页面中“查看进度”,弹出的网格启用进度中显示:资源创建、环境准备、组件安装、舰队集群接入四个阶段任务信息。
  • 集群级别 集群级别的资源,它的作用范围要比命名空间大很多,全集群可见,并且可以调用,不属于某一个命名空间,因此资源对象的名称必须全局唯一。 集群级别的资源,不管在任何命名空间下定义,在其他的命名空间下都能看得到,在定义的时候无需指定命名空间。 常见的集群级资源有:Namespace(命名空间)、Node(节点)、Role(角色)、RoleBinding(角色绑定)、ClusterRole(集群角色)、ClusterRoleBinding(集群角色绑定)。 Namespace:是Kubernetes提供的隔离机制,用于给集群中的任何资源对象进行分类、筛选和管理。 要查询集群下所有的命名空间,可以使用如下命令: kubectl get ns Node:节点是组成容器集群的基本元素,可以为虚拟机或物理机。每个节点都包含运行Pod所需要的基本组件,包括Kubelet、Kube-proxy等。Node名称要全局唯一。 Role:角色,其实是定义一组对Kubernetes资源(命名空间级别)的访问规则。 RoleBinding:角色绑定,定义了用户和角色的关系。 ClusterRole:集群角色,其实是定义一组对Kubernetes资源(集群级别,包含全部命名空间)的访问规则。 ClusterRoleBinding:集群角色绑定,定义了用户和集群角色的关系。 Role和ClusterRole指定了可以对哪些资源做哪些动作,RoleBinding和ClusterRoleBinding将角色绑定到特定的用户、用户组或ServiceAccount上。
  • 命名空间级别 命名空间(Namespace)是Kubernetes提供的隔离机制,用于给集群中的任何资源对象进行分类、筛选和管理。 如果不同的资源对象放在不同的命名空间下,他们就会相互隔离。例如,获取所有Pod使用的命令是: kubectl get pod 这里的Pod是有命名空间的,默认为default。指定命名空间需使用如下命令: kubectl get pod -n default 当要获取全部命名空间下的Pod时,使用如下命令: kubectl get pod --all-namespaces 这样就可以看到集群下所有的Pod了。 $ kubectl get pod --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default nginx-dd9796d66-5chbr 1/1 Running 0 3d1h default nginx-dd9796d66-xl69p 1/1 Running 0 15d default sa-example 1/1 Running 0 10d kube-system coredns-6fcd88c4c-k8rtf 1/1 Running 0 48d kube-system coredns-6fcd88c4c-z46p4 1/1 Running 0 48d kube-system everest-csi-controller-856f8bb679-42rgw 1/1 Running 1 48d kube-system everest-csi-controller-856f8bb679-xs6dz 1/1 Running 0 48d kube-system everest-csi-driver-mkpbv 2/2 Running 0 48d kube-system everest-csi-driver-v754w 2/2 Running 0 48d kube-system icagent-5p44q 1/1 Running 0 48d kube-system icagent-jrlbl 1/1 Running 0 48d monitoring alertmanager-alertmanager-0 2/2 Running 0 29d monitoring cluster-problem-detector-7788f94f64-thp6s 1/1 Running 0 29d monitoring custom-metrics-apiserver-5f7dcf6d9-n5nrr 1/1 Running 0 19d monitoring event-exporter-6844c5c685-khf5t 1/1 Running 1 3d1h monitoring kube-state-metrics-8566d5f5c5-7kx7b 1/1 Running 0 29d monitoring node-exporter-7l4ml 1/1 Running 0 29d monitoring node-exporter-gpxvl 1/1 Running 0 29d Pod属于命名空间级资源。此外,大多数工作负载资源、Service资源、配置与存储资源都属于命名空间级。 工作负载资源 Pod:Kubernetes部署应用或服务的最小的基本单位。 ReplicaSet:Kubernetes中的一种副本控制器,主要作用是控制由其管理的Pod,使Pod副本的数量始终维持在预设的个数。 Deployment:声明了Pod的模板和控制Pod的运行策略,适用于部署无状态的应用程序。 StatefulSet:主要用于管理有状态的应用,创建的Pod拥有根据规范创建的持久型标识符。 DaemonSet:主要用于部署常驻集群内的后台程序,例如节点的日志采集。 Job:Job控制器会创建一个或者多个Pod,这些Pod按照运行规则运行,直至运行结束。 CronJob:根据指定的预定计划周期性地运行一个Job。 服务发现资源 Service:用户在 Kubernetes中可以部署各种容器,其中一部分是通过HTTP、HTTPS协议对外提供七层网络服务,另一部分是通过TCP、UDP协议提供四层网络服务。而Kubernetes 定义的Service资源是用来管理集群中四层网络的服务访问。基于四层网络,Service提供了集群内容器服务的暴露能力。 Ingress:Ingress能够提供七层网络下HTTP、HTTPS协议服务的暴露,同时也包括各种七层网络下的常见能力。Ingress是允许访问到集群内Service规则的集合,您可以通过配置转发规则,实现不同URL可以访问到集群内不同的Service。 配置与存储资源 ConfigMap:key-value类型的键值对,通过ConfigMap您可以将配置与运行的镜像进行解耦,使应用程序有更强的移植性。 Secret:key-value类型的键值对,用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险。 Volume:Volume(存储卷)本质是一个目录,其中可能包含一些数据,Pod中的容器可以访问该目录。Volume的生命周期与挂载它的Pod相同,但是Volume里面的文件可能在Volume消失后仍然存在,这取决于Volume的类型。
  • 创建FederatedHPA策略 控制台创建 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 单击已开通集群联邦的容器舰队名称,进入容器舰队详情页面。 在左侧导航栏选择“负载伸缩”,在“指标伸缩策略”页签下,单击右上角的“创建指标伸缩策略”。 配置FederatedHPA策略参数。 表1 FederatedHPA策略参数配置 参数 参数说明 策略名称 FederatedHPA策略的名称。输入长度范围为4-63个字符。 命名空间 请选择需要自动扩缩的工作负载所在命名空间的名称。也可新建命名空间,具体操作请参见命名空间。 生效工作负载 请选择需要设置自动扩缩的工作负载的名称。也可新建工作负载,具体操作请参见工作负载。 实例范围 触发策略时,工作负载内Pod数量所能达到的最大值与最小值。 最小值:请输入1-299之间的正整数。 最大值:请输入1-1500之间的正整数,且填写值需大于实例范围最小值。 稳定窗口时长 稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。默认扩容稳定窗口时长为0秒,缩容稳定窗口时长为300秒。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?。 扩容:请输入0-3600之间的正整数,单位为秒。 缩容:请输入0-3600之间的正整数,单位为秒。 系统规则 若您需要基于系统指标对工作负载进行扩缩,则需配置该规则。 指标:可选择“CPU利用率”或“内存利用率”。 期待值:指标数据达到期待值时,触发扩缩。 自定义规则 若您需要基于自定义指标对工作负载进行扩缩,则需配置该规则。 自定义指标名称:在下拉框中选择自定义指标的名称。 指标来源:在下拉框中选择自定义指标所描述的对象类型,目前仅支持“Pod”。 期待值:指标数据达到期待值时,触发扩缩。 注意: 自定义规则仅支持1.19及更高版本的集群创建。 使用自定义规则时,集群中需要安装支持采集自定义指标的插件,且工作负载需正常上报并采集自定义指标,详情请参见安装指标采集插件。 参数配置完成后,单击右下角“创建”,即可跳转指标伸缩策略列表查看策略详情,完成FederatedHPA策略创建。 命令行创建 使用kubectl连接集群联邦,具体操作请参见使用kubectl连接集群联邦。 创建并编辑fhpa.yaml文件,文件内容定义如下所示,关键参数定义请参见表2。 vi fhpa.yaml 本示例创建的FederatedHPA策略名称为hpa-example-hpa,作用于名称为hpa-example的工作负载,稳定窗口时长为扩容0秒、缩容300秒,最大Pod数为100、最小Pod数为2,包含两条系统指标规则(名称为“memory”和“cpu”)。其中,memory规则中内存利用率的期望值为50%,cpu规则中CPU利用率的期望值为60%。 apiVersion: autoscaling.karmada.io/v1alpha1 kind: FederatedHPA metadata: name: hpa-example-hpa # FederatedHPA策略名称 namespace: default # 工作负载所在命名空间名称 spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: hpa-example # 工作负载名称 behavior: scaleDown: stabilizationWindowSeconds: 300 # 缩容的稳定窗口时长为300秒 scaleUp: stabilizationWindowSeconds: 0 # 扩容的稳定窗口时长为0秒 minReplicas: 2 # 最小Pod数为2 maxReplicas: 100 # 最大Pod数为100 metrics: - type: Resource resource: name: memory # 第一条规则名称 target: type: Utilization # 指标类型为利用率 averageUtilization: 50 # 期望的平均利用率 - type: Resource resource: name: cpu # 第二条规则名称 target: type: Utilization # 指标类型为利用率 averageUtilization: 60 # 期望的平均利用率 表2 关键参数说明 参数 是否必填 参数类型 描述 stabilizationWindowSeconds 否 String 缩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为300秒。 说明: 稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?。 stabilizationWindowSeconds 否 String 扩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为0秒。 minReplicas 是 String 触发策略时,工作负载内Pod数量所能缩容到的最小值,请输入1-299之间的正整数。 maxReplicas 是 String 触发策略时,工作负载内Pod数量所能扩容到的最大值,请输入1-1500之间的正整数,且输入值需大于实例范围最小值。 name 是 String 规则名称。基于系统指标进行弹性伸缩时,基于内存利用率的规则名称为memory,基于CPU利用率的规则名称为cpu。 type 是 String 指标类型。 Value:总量 AverageValue:平均量 = 总量 / 当前Pod数 Utilization:利用率 = 平均量 / 申请量 averageUtilization 是 String 指标数据达到期待值时,触发扩缩。 执行如下命令创建FederatedHPA策略。 kubectl apply -f fhpa.yaml 回显如下表明创建成功。 FederatedHPA.autoscaling.karmada.io/hpa-example-hpa created 创建完成后,可以执行如下命令观察负载伸缩的运行效果。 检查工作负载的当前Pod数:kubectl get deployments 查看FederatedHPA策略事件(仅保留最近三条):kubectl describe federatedhpa hpa-example-hpa 可以执行如下命令管理FederatedHPA策略。其中hpa-example-hpa为FederatedHPA策略的名称,实际情况中需修改为自己所创建的策略名称。 获取FederatedHPA策略:kubectl get federatedhpa hpa-example-hpa 更新FederatedHPA策略:kubectl edit federatedhpa hpa-example-hpa 删除FederatedHPA策略:kubectl delete federatedhpa hpa-example-hpa
共100000条