华为云用户手册

  • URI GET /v2/{project_id}/msgsms/templates 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,参考“获取帐号、用户、项目的名称和ID” 表2 Query参数 参数 是否必选 参数类型 描述 app_key 否 String 应用key app_name 否 String 应用名称 end_time 否 String 结束时间 flow_status 否 String 流程状态 Adopted:通过 Reviewing:审核中 Reject:拒绝 has_variable 否 String 是否存在变量 limit 否 Integer 数量,默认值10 offset 否 Integer 偏移量 sign_name 否 String 签名名称 sort_dir 否 String 排序方式 desc:降序 asc:升序 sort_key 否 String 排序字段,仅支持create_time start_time 否 String 开始时间 template_id 否 String 模板ID template_name 否 String 模板名称 template_type 否 String 模板类型 VERIFY_CODE_TYPE:验证码类 PROMOTION_TYPE:推广类 NOTIFY_TYPE:通知类 region 否 String 地域 1. cn:国内 2. intl:国际
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 results Array of SmsTemplateResp 查询结果 total Long 总数 表5 SmsTemplateResp参数 参数 是否必选 参数类型 描述 id 否 String 模板主键ID,用于获取、修改、删除模板以及查询模板变量的唯一标识 create_time 否 String 创建时间[yyyy-MM-dd HH:mm:ss] update_time 否 String 更新时间[yyyy-MM-dd HH:mm:ss] customer_id 否 String 租户customer id tenant 否 TentantBasic - template_name 否 String 模板名称 template_id 否 String 模板ID template_type 否 String 模板类型 app_name 否 String 应用名称 app_key 否 String 应用key sign_id 否 String 签名id template_content 否 String 模板内容 has_variable 否 String 是否有变量 template_desc 否 String 申请描述 review_desc 否 String 审核意见 review_order 否 String 审核人账号 flow_status 否 String 流程状态 universal_template 否 Integer 是否是通用模板 status 否 String 模板状态 Test:测试 Normal:正常 region 否 String 地域 cn:国内 intl:国际 brackets 否 String 中括号类型。支持枚举值: CN:中文类型:【】 GB:英文类型: [] 须知: 默认值为:CN 输入值不在上述枚举值范围内的,也按CN处理。 只有地域为国内时,该字段有效。 site 否 String 地域,取值范围:cn及hk ,当前该参数暂时不使用 urge_status 否 String 催审状态 urge_time 否 String 催审时间 urge_desc 否 String 催审描述 send_country1 否 Integer 发送国家1 send_country2 否 Integer 发送国家2 send_country3 否 Integer 发送国家3 is_support_multiomp 否 boolean 是否支持多OMP country_name 否 String 国家名称列表,返回发送国家前三名的国家名称,国家名称间以"~"分隔
  • 常用概念 名词 说明 短信服务 华为云为企业用户(不包括个体工商户、个人独资企业、合伙企业等非法人主体或组织)提供单发、群发短信服务,同时可接收用户回复短信。 短信发送形式:可开发代码调用API,或使用群发助手发送短信。 国内短信 向中国大陆号码发送短信。支持发送验证码和行业通知短信。国内短信支持三网合一(移动,联通,电信,新增支持广电)专属通道。可参见开通流程。 验证码短信 发送携带数字验证码内容的短信。用于用户注册、用户登录、转账和密码找回等场景。可参见模板规范和变量规范。 通知短信 发送携带通知类内容的短信。用于快递通知、消费通知、即时提醒等场景。可参见模板规范和变量规范。 推广短信 又称营销短信,向有订购关系的会员用户发送推广短信。用于会员关怀、促销活动、运营活动等场景。可参见模板规范和变量规范。 短信签名 签名为一种方便快捷的个性化短信签名方式。短信由签名和短信正文组成。 说明: 在发送短信前需要申请短信签名和正文内容模板。国内短信必须携带签名,例如【华为云】。 请您提前申请签名,平台根据运营商规范审核通过后,使用申请的签名发送短信。 签名用于标识企业、产品或业务,必须提供实际依据,授权委托书、营业执照等。 签名分验证码、通知、推广三种类型,可申请多个。具体请参见签名规范。 短信模板 为用户提供短信正文的固定模板,根据企业业务需要,分为两种: 短信模板 = 固定文本+变量 短信模板 = 固定文本 说明: 必须提前将短信内容申请为模板才能发送短信,平台根据运营商规范审核(仅支持工作日审核)通过后,使用申请的模板发送短信。 根据企业业务需要,可提前申请多个短信模板。 短信模板分为分验证码、通知、推广三种类型。具体请参见模板规范和变量规范。 群发助手 群发短信工具,可直接在短信控制台上一键群发,无需开发代码。 父主题: 产品概述
  • 短信群发助手中,为何无法选择短信签名和模板? 使用群发助手提交发送任务时,请按先后顺序依次选择“短信应用” 、 “短信签名”、“短信模板”。 国内短信应用、签名、模板之间的关联关系,详见短信资源介绍。若下拉选项为空,请按下表处理。 参数 问题现象 可能原因 处理建议 短信应用 下拉选项为空,显示“暂无数据” 该华为云账号下还未添加短信应用。 请先创建短信应用。 短信签名 未选择“短信应用”。 已选择的“短信应用”下无可用的非验证码类短信签名。 请检查“短信应用”参数,并确认选择正确。 请检查该应用下是否有可用的非验证码类短信签名。若没有,请先申请短信签名。 短信模板 未选择“短信应用”。 (仅国内短信)未选择“短信签名”。 (仅国内短信)已选择的“短信签名”下无可用的短信模板。 请检查“短信应用”参数,并确认选择正确。 (仅国内短信)请检查“短信签名”参数,并确认选择正确。 (仅国内短信)请检查该签名下是否有可用的短信模板。若没有,请先申请短信模板。 父主题: 故障排除
  • 准备访问密钥 OBS通过用户账号中的AK和SK进行签名验证,确保通过授权的账号才能访问指定的OBS资源。获取访问密钥前,请确保访问OBS的 IAM 子用户已开启编程访问,开启方式详见修改或查看IAM用户信息。以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在 对象存储服务 系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象存储服务系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 访问密钥分永久访问密钥(AK/SK)和临时访问密钥(AK/SK和SecurityToken)两种。每个用户最多可创建两个有效的永久访问密钥。临时访问密钥只在设置的有效期内能够访问OBS,过期后需要重新获取。出于安全性考虑,建议您使用临时访问密钥访问OBS,或使用永久访问密钥访问OBS时,定期更新您的访问密钥(AK/SK)。两种密钥的获取方式如下。 永久访问密钥: 登录OBS控制台。 单击页面右上角的用户名,并选择“我的凭证”。 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。 在“访问密钥”页面,单击“新增访问密钥”。 在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 单击“确定”。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 临时访问密钥: 临时AK/SK和SecurityToken是系统颁发给用户的临时访问令牌,通过接口设置有效期,范围为15分钟至24小时,过期后需要重新获取。临时AK/SK和SecurityToken遵循权限最小化原则。使用临时AK/SK鉴权时,临时AK/SK和SecurityToken必须同时使用。 获取临时访问密钥的接口请参考获取临时AK/SK和securitytoken。 OBS属于全局级服务,所以在获取临时访问密钥时,需要设置Token的使用范围取值为domain,表示获取的Token可以作用于全局服务,全局服务不区分项目或者区域。
  • 准备开发环境 从Python官网下载并安装合适的Python版本。 推荐使用的Python 2.x版本:Python 2.7.x版本。 推荐使用的Python 3.x版本:Python 3.6及以上版本。 不推荐使用python3.5及以下版本,如要使用需要运行命令pip install secrets,安装安全随机数模块,python2.7版本可用python2-secrets代替。 从PyCharm官网下载并安装最新社区版本。 运行命令 pip install pycryptodome==3.10.1,安装加密库。
  • 操作步骤 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”。 在“缓存管理”页面,单击需要开启客户端IP透传的缓存实例名称。 在“连接信息”栏中单击“客户端IP透传”后的,可以修改客户端IP透传的状态。 查看客户端IP(以执行Client List为例)。 通过network=vpc的记录,查看其中addr值即为客户端IP的值。 图1 开启客户端IP透传前 图2 开启客户端IP透传后 开启客户端IP透传后,新建的客户端连接才会生效,旧的客户端连接仍然只能显示198.19地址。
  • 交换IP须知 交换IP过程中,会自动停止在线迁移任务。 交换实例IP地址时,会有一分钟内只读和秒级的闪断。 创建的目标端实例端口需要与源实例端口保持一致。 请确保您的客户端应用具备重连机制和处理异常的能力,否则在交换IP后有可能需要重启客户端应用。 源实例和目标实例不在同一子网时,交换IP地址后,会更新实例的子网信息。 如果源端是主备实例,交换IP时不会交换备节点IP,请确保应用中没有直接引用备节点IP。 如果应用中有直接引用域名,请选择交换域名,否则域名会挂在源实例中。 请确保目标Redis和源Redis密码一致,否则交换IP后,客户端会出现密码验证错误。 当源实例配置了白名单时,则在进行IP交换前,保证目标实例也配置同样的白名单。
  • 前提条件 获取源实例及目标实例信息,可参考步骤2:准备目标Redis实例准备目标实例。 参考步骤:3:检查网络确保源实例和目标实例网络互通。 创建的目标实例端口需要与源实例保持一致。 进行实例交换IP满足的条件为: 进行实例IP交换依赖的是数据迁移功能,所以,源实例及目标实例必须支持数据迁移功能,详见表1。 源实例和目标实例都为云服务Redis实例。 交换IP支持的能力如下表1。 表1 交换ip能力 源端 目标端 单机/主备/读写分离 单机/主备/读写分离/proxy集群 Proxy集群 单机/主备/读写分离/proxy集群
  • 操作步骤 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入D CS 缓存实例信息页面。 “缓存管理”页面支持通过搜索栏筛选对应的缓存实例。 在需要查看的DCS缓存实例左侧,单击实例名称,进入实例的基本信息页面。 单击“备份与恢复”页签,进入备份恢复管理页面。 页面下方显示历史备份数据列表。 选择需要下载的历史备份数据,单击右侧的“下载”,弹出下载备份文件窗口。 选择下载方式。 包括以下两种下载方式: URL下载 设置URL有效期并单击“查询”按钮。 通过URL列表,或单击“下载”下载备份文件。 如果复制下载链接,并在Linux系统中使用wget命令获取备份文件,则需要将下载链接使用英文引号括起来。如: wget 'https://obsEndpoint.com:443/redisdemo.rdb?parm01=value01&parm02=value02' 原因是URL中携带符号:&,wget命令识别URL参数会出现异常,需要使用英文引号辅助识别完整URL。 OBS下载 按照页面的下载步骤描述操作即可。
  • 开启敏感操作保护(可选) 下载备份文件支持敏感操作保护。开启操作保护后,下载备份文件时,需要输入验证码进行验证,从而提升客户数据安全性。 只有管理员可以设置敏感操作,普通IAM用户只有查看权限,不能对其进行设置,如需修改,请联系管理员为您操作或添加权限。 关于敏感操作的更多说明请参考敏感操作。 登录华为云控制台,鼠标移动至右上方的用户名,在下拉列表中选择“安全设置”。 在安全设置页面选择“敏感操作”页签。 单击“操作保护”项对应的“立即启用”,即可开启操作保护。 开启操作保护后,在下载DCS备份文件时,会弹出“操作确认”窗口,需要完成身份验证后,才可以下载备份文件。 图1 操作确认
  • 响应参数 状态码: 200 表8 响应Body参数 参数 参数类型 描述 edge_app_id String 应用ID 最小长度:0 最大长度:64 app_version String 应用版本 最小长度:0 最大长度:64 state String 模块运行状态 枚举值: PENDING PENDING_DELETE DELETE_FAILED RUNNING FAILED SUCCEEDED UNKNOWN DELETE_SUC CES S STOPPED control_status String 模块管控状态 node_id String 边缘节点(同deviceID)ID 最小长度:0 最大长度:64 module_name String 模块名称 最小长度:0 最大长度:256 module_id String 模块ID 最小长度:0 最大长度:64 create_time String 创建时间 最小长度:0 最大长度:256 update_time String 最后一次修改时间 最小长度:0 最大长度:256 app_type String 应用类型 枚举值: SYSTEM_REQUIRED SYSTEM_OPTIONAL USER function_type String 功能类型 枚举值: DATA_PROCESSING PROTOCOL_PARSING ON_PREMISE_INTEGRATION GATEWAY_MANAGER COMPOSITE_APPLICATION DATA_COLLECTION
  • 响应示例 状态码: 200 OK { "edge_app_id" : "test-app", "app_version" : "1.1.0", "state" : "RUNNING", "control_status" : "0000000000000000", "node_id" : "test-node", "module_name" : "edge_module", "module_id" : "test-module-id", "create_time" : "2020-05-28T11:31:29.740Z", "update_time" : "2020-05-28T11:31:29.740Z", "app_type" : "SYSTEM_REQUIRED", "function_type" : "DATA_PROCESSING" }
  • 请求示例 PUT https://{endpoint}/v2/{project_id}/edge-nodes/{edge_node_id}/modules/{module_id} { "app_version" : "1.1.0", "module_name" : "edge_module", "container_settings" : { "configs" : { "container_port_list" : [ { "container_port" : 65535, "host_port" : 65535, "host_ip" : "string" } ] } }, "desired_state" : "RUNNING" }
  • URI PUT /v2/{project_id}/edge-nodes/{edge_node_id}/modules/{module_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。获取方法请参见 获取项目ID。 最小长度:1 最大长度:64 edge_node_id 是 String 边缘节点ID 最小长度:1 最大长度:64 module_id 是 String 边缘模块ID 最小长度:1 最大长度:64
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 最小长度:0 最大长度:20000 表3 请求Body参数 参数 是否必选 参数类型 描述 app_version 否 String 边缘应用版本 最小长度:0 最大长度:64 module_name 否 String 边缘模块名称 最小长度:0 最大长度:256 desired_state 否 String 模块期望状态: RUNNING(升级后期望模块运行),STOPPED(升级后期望模块停止),空值默认继承升级前模块期望状态 最小长度:0 最大长度:64 枚举值: RUNNING STOPPED container_settings 否 ContainerSettingsReqDTO object 容器设置 表4 ContainerSettingsReqDTO 参数 是否必选 参数类型 描述 configs 否 ContainerConfigsReqDTO object 容器相关配置 custom_envs 否 Object 自定义环境变量 extra_hosts 否 Object 域名解析配置集合 数组长度:0 - 20 表5 ContainerConfigsReqDTO 参数 是否必选 参数类型 描述 container_port_list 否 Array of ContainerPortDTO objects 容器端口映射值 数组长度:0 - 1000000 表6 ContainerPortDTO 参数 是否必选 参数类型 描述 container_port 否 Integer 构成一堆映射的容器端口 最小值:1 最大值:65535 host_port 否 Integer 构成一对映射的物理机对应网卡端口 最小值:1 最大值:65535 host_ip 否 String 对应网卡地址 最小长度:0 最大长度:64 表7 DNSConfigDTO 参数 是否必选 参数类型 描述 hostname 否 String 域名 最小长度:1 最大长度:1024 ip 否 String 域名解析对应IP 最小长度:1 最大长度:64
  • 参数配置 数据订阅过程中,部分参数会影响拉取数据的速度和间隔。 在启动SDK之前,您可以根据需要在“subscribe.properties”的配置文件中,对以下参数进行设置: # 获取订阅数据初始延时 MESSAGE_DELAY_TIME = 1500000 # 获取订阅数据间隔时间 MESSAGE_PERIOD_TIME = 2000000 # 通知用户订阅数据到达初始延时 NOTIFY_DELAY_TIME = 2000 # 通知用户订阅数据间隔 NOTIFY_PERIOD_TIME = 1000 # 返回服务端ack消息初始延时 ACK_DELAY_TIME = 3000 # 返回服务端ack消息时间间隔 ACK_PERIOD_TIME = 5000 以上参数值为默认配置,您可以使用默认值,也可以根据实际情况自定义参数值。 以上涉及到时间的单位均为微秒。
  • 在科大讯飞构建同名技能后,导入技能文件 执行本操作前,需要在科大讯飞平台完成账号注册操作。 访问科大讯飞的AIUI开放平台。 单击界面上方的“技能工作室”。进入“技能控制台”页面,如图9所示。 图9 技能控制台 单击“创建技能”,弹出如图10所示的对话框。 参数配置说明,如下所示: 技能名称:技能名称。必须与MetaStudio服务创建的技能一一对应,如6所示。为方便识别和记忆,两边的技能名称可以设置成一样的。 技能标识:需要与MetaStudio服务新能技能的“技能标识”一致,如6所示。 图10 创建技能 输入完成后,单击“创建”。 界面提示“创建成功”,并自动跳转至“意图”页面,如图11所示。 图11 意图页面 单击“批量操作”,从下拉框中选择“批量覆盖”,在弹出的确定对话框中,单击“确定覆盖”。 从本地选择MetaStudio服务中导出的技能文件,如10所示。界面提示“批量覆盖成功”,效果如图12所示。 图12 意图页面 单击界面右上方的“构建技能”,开始构建技能。 界面提示“构建成功”,说明技能构建成功。 在左侧导航栏中,单击“发布”。进入“发布”页面,如图13所示。 图13 发布页面 确认信息无误后,单击“发布上线”。 界面提示“发布成功”,说明技能发布完成。
  • 通过控制台创建 登录CCE控制台。 单击集群名称进入集群,在左侧选择“工作负载”,在右上角单击“创建负载”。 配置工作负载的信息。 基本信息 负载类型:选择无状态工作负载Deployment。工作负载类型的介绍请参见工作负载概述。 负载名称:填写工作负载的名称。请输入1到63个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。 命名空间:选择工作负载的命名空间,默认为default。您可以单击后面的“创建命名空间”,命名空间的详细介绍请参见创建命名空间。 实例数量:填写实例的数量,即工作负载Pod的数量。 容器运行时:CCE Standard集群默认使用普通运行时, CCE Turbo 集群可以使用普通运行时或安全运行时。具体区别请参见安全运行时与普通运行时。 时区同步:选择是否开启时区同步。开启后容器与节点使用相同时区(时区同步功能依赖容器中挂载的本地磁盘,请勿修改删除),时区同步详细介绍请参见时区同步。 容器配置 容器信息 Pod中可以配置多个容器,您可以单击右侧“添加容器”为Pod配置多个容器。 基本信息:配置容器的基本信息。 参数 说明 容器名称 为容器命名。 更新策略 镜像更新/拉取策略。可以勾选“总是拉取镜像”,表示每次都从镜像仓库拉取镜像;如不勾选则优使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。 镜像名称 单击后方“选择镜像”,选择容器使用的镜像。 如果需要使用第三方镜像,请参见使用第三方镜像。 镜像版本 选择需要部署的镜像版本。 CPU配额 申请:容器需要使用的最小CPU值,默认0.25Core。 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。 如不填写申请值和限制值,表示不限制配额。申请值和限制值的配置说明及建议请参见设置容器规格。 内存配额 申请:容器需要使用的内存最小值,默认512MiB。 限制:允许容器使用的内存最大值。如果超过,容器会被终止。 如不填写申请值和限制值,表示不限制配额。申请值和限制值的配置说明及建议请参见设置容器规格。 GPU配额(可选) 当集群中包含GPU节点时,才能设置GPU配额,且集群中需安装CCE AI套件(NVIDIA GPU)插件。 不限制:表示不使用GPU。 独享:单个容器独享GPU。 共享:容器需要使用的GPU百分比,例如设置为10%,表示该容器需使用GPU资源的10%。 关于如何在集群中使用GPU,请参见使用Kubernetes默认GPU调度。 NPU配额(可选) 使用NPU芯片(昇腾系列)的数量,必须为整数,且必须安装CCE AI套件(Ascend NPU)插件后才能使用。 关于如何在集群中使用NPU,请参见NPU调度。 特权容器(可选) 特权容器是指容器里面的程序具有一定的特权。 若选中,容器将获得超级权限,例如可以操作宿主机上面的网络设备、修改内核参数等。 初始化容器(可选) 选择容器是否作为初始化(Init)容器。初始化(Init)容器不支持设置健康检查。 Init容器是一种特殊容器,可以在Pod中的其他应用容器启动之前运行。每个Pod中可以包含多个容器,同时Pod中也可以有一个或多个先于应用容器启动的Init容器,当所有的Init 容器运行完成时,Pod中的应用容器才会启动并运行。详细说明请参见Init 容器。 生命周期(可选):在容器的生命周期的特定阶段配置需要执行的操作,例如启动命令、启动后处理和停止前处理,详情请参见设置容器生命周期。 健康检查(可选):根据需求选择是否设置存活探针、就绪探针及启动探针,详情请参见设置容器健康检查。 环境变量(可选):支持通过键值对的形式为容器运行环境设置变量,可用于把外部信息传递给Pod中运行的容器,可以在应用部署后灵活修改,详情请参见设置环境变量。 数据存储(可选):在容器内挂载本地存储或 云存储 ,不同类型的存储使用场景及挂载方式不同,详情请参见存储。 负载实例数大于1时,不支持挂载云硬盘类型的存储。 安全设置(可选):对容器权限进行设置,保护系统和其他容器不受其影响。请输入用户ID,容器将以当前用户权限运行。 容器日志(可选):容器标准输出日志将默认上报至 AOM 服务,无需独立配置。您可以手动配置日志采集路径,详情请参见通过ICAgent采集容器日志(不推荐)。 如需要关闭当前负载的标准输出,您可在标签与注解中添加键为kubernetes.AOM.log.stdout,值为[]的注解,即可关闭当前负载下全部容器的标准输出。该注解的使用方法请参见表1。 镜像访问凭证:用于访问镜像仓库的凭证,默认取值为default-secret,使用default-secret可访问SWR镜像仓库的镜像。default-secret详细说明请参见default-secret。 GPU显卡(可选):默认为不限制。当集群中存在GPU节点时,工作负载实例可以调度到指定GPU显卡类型的节点上。 服务配置(可选) 服务(Service)可为Pod提供外部访问。每个Service有一个固定IP地址,Service将访问流量转发给Pod,而且Service可以为这些Pod自动实现负载均衡。 您也可以在创建完工作负载之后再创建Service,不同类型的Service概念和使用方法请参见服务概述。 高级配置(可选) 升级策略:指定工作负载的升级方式及升级参数,支持滚动升级和替换升级,详情请参见工作负载升级策略。 调度策略:通过配置亲和与反亲和规则,可实现灵活的工作负载调度,支持负载亲和与节点亲和。 负载亲和:提供常用的负载亲和策略,快速实现负载亲和部署。 优先多可用区部署:通过设置Pod间反亲和(podAntiAffinity)实现,优先将工作负载的Pod调度到不同可用区的节点上,如集群下节点不满足多可用区,Pod将调度到不同的节点上满足高可用,如节点数小于实例数,Pod无法全部运行。 强制多可用区部署:通过设置Pod间反亲和(podAntiAffinity)实现,强制将工作负载的Pod调度到不同可用区的节点上,如集群下节点支持的可用区数量小于实例数,工作负载的Pod无法全部运行。 自定义亲和策略:根据需求自定义设置亲和与反亲和规则,详情请参见调度策略(亲和与反亲和)。 节点亲和:提供常用的负载亲和策略,快速实现负载亲和部署。 指定节点调度:通过设置节点亲和(nodeAffinity)实现,指定工作负载的Pod部署的节点,若不指定,将根据集群默认调度策略随机调度。 指定节点池调度:通过设置节点亲和(nodeAffinity)实现,指定工作负载的Pod部署的节点池,若不指定,将根据集群默认调度策略随机调度。 自定义亲和策略:根据需求自定义设置亲和与反亲和规则,详情请参见调度策略(亲和与反亲和)。 容忍策略:容忍策略与节点的污点能力配合使用,允许(不强制)负载调度到带有与之匹配的污点的节点上,也可用于控制负载所在的节点被标记污点后负载的驱逐策略,详情请参见容忍策略。 标签与注解:以键值对形式为工作负载Pod添加标签或注解,填写完成后需单击“确认添加”。关于标签与注解的作用及配置说明,请参见标签与注解。 DNS配置:为工作负载单独配置DNS策略,详情请参见工作负载DNS配置说明。 性能管理配置:使用 应用性能管理 APM )服务,为JAVA程序提供更精准的问题分析与定位,详情请参见性能管理配置(性能瓶颈分析)。 网络配置: Pod入/出口带宽限速:支持为Pod设置入/出口带宽限速,详情请参见为Pod配置QoS。 IPv6共享带宽:仅支持该功能的集群显示该选项,开启后可为Pod的IPv6双栈网卡绑定共享带宽,详情请参见为IPv6双栈网卡的Pod配置共享带宽。 单击右下角“创建工作负载”。
  • 通过kubectl命令行创建 本节以nginx工作负载为例,说明kubectl命令创建工作负载的方法。 请参见通过kubectl连接集群,使用kubectl连接集群。 创建一个名为nginx-deployment.yaml的描述文件。其中,nginx-deployment.yaml为自定义名称,您可以随意命名。 vi nginx-deployment.yaml 描述文件内容如下。此处仅为示例,deployment的详细说明请参见kubernetes官方文档。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - image: nginx #若使用“开源镜像中心”的镜像,可直接填写镜像名称;若使用“我的镜像”中的镜像,请在SWR中获取具体镜像地址。 imagePullPolicy: Always name: nginx imagePullSecrets: - name: default-secret 以上yaml字段解释如表1。 表1 deployment字段详解 字段名称 字段说明 必选/可选 apiVersion 表示API的版本号。 说明: 请根据集群版本输入: 1.17及以上版本的集群中无状态应用apiVersion格式为apps/v1 1.15及以下版本的集群中无状态应用apiVersion格式为extensions/v1beta1 必选 kind 创建的对象类别。 必选 metadata 资源对象的元数据定义。 必选 name deployment的名称。 必选 spec 用户对deployment的详细描述的主体部分都在spec中给出。 必选 replicas 实例数量。 必选 selector 定义Deployment可管理的容器实例。 必选 strategy 升级类型。当前支持两种升级方式,默认为滚动升级。 RollingUpdate:滚动升级。 ReplaceUpdate:替换升级。 可选 template 描述创建的容器实例详细信息。 必选 metadata 元数据。 必选 labels metadata.labels定义容器标签。 可选 spec: containers image(必选):容器镜像名称。 imagePullPolicy(可选):获取镜像的策略,可选值包括Always(每次都尝试重新下载镜像)、Never(仅使用本地镜像)、IfNotPresent(如果本地有该镜像,则使用本地镜像,本地不存在时下载镜像),默认为Always。 name(必选):容器名称。 必选 imagePullSecrets Pull镜像时使用的secret名称。若使用私有镜像,该参数为必选。 需要Pull SWR容器镜像 仓库的镜像时,参数值固定为default-secret。 当Pull第三方镜像仓库的镜像时,需设置为创建的secret名称。 可选 创建deployment。 kubectl create -f nginx-deployment.yaml 回显如下表示已开始创建deployment。 deployment "nginx" created 查看deployment状态。 kubectl get deployment deployment状态显示为Running,表示deployment已创建成功。 NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 4m5s 参数解析: NAME:工作负载名称。 READY:表示工作负载的可用状态,显示为“可用Pod个数/期望Pod个数”。 UP-TO-DATE:指当前已经完成更新的副本数。 AVAILABLE:可用的Pod个数。 AGE:已经运行的时间。 若工作负载(即deployment)需要被访问(集群内访问或节点访问),您需要设置访问方式,具体请参见网络创建对应服务。
  • 优先级调度与抢占介绍 用户在集群中运行的业务丰富多样,包括核心业务、非核心业务,在线业务、离线业务等,根据业务的重要程度和SLA要求,可以对不同业务类型设置相应的高优先级。比如对核心业务和在线业务设置高优先级,可以保证该类业务优先获取集群资源。当集群资源被非核心业务占用,整体资源不足时,如果有新的核心业务提交部署请求,可以通过抢占的方式驱逐部分非核心业务,释放集群资源用于核心业务的调度运行。 CCE集群支持的优先级调度如表1所示。 表1 业务优先级保障调度 调度类型 说明 支持的调度器 基于优先级调度 调度器优先保障高优先级业务运行,但不会主动驱逐已运行的低优先级业务。基于优先级调度配置默认开启,不支持关闭。 kube-scheduler调度器/Volcano调度器 基于优先级抢占调度 当集群资源不足时,调度器主动驱逐低优先级业务,保障高优先级业务正常调度。 Volcano调度器
  • 基于优先级抢占调度的亲和/反亲和示例 在Pod间亲和场景中,不推荐Pod与比其优先级低的Pod亲和。如果pending状态的Pod与节点上的一个或多个较低优先级Pod具有Pod间亲和性,对较低优先级的Pod发起抢占时,会无法满足Pod间亲和性规则,抢占规则和亲和性规则产生矛盾。 在这种情况下,调度程序无法保证pending状态的Pod可以被调度。详情请参见与低优先级Pod之间的Pod间亲和性。 在Pod间反亲和场景中,如果启用优先级抢占,当deploy1与比其优先级低的deploy2亲和,volcano-scheduler为保证业务自运维,将驱逐deploy3,并将deploy1调度到节点上。被驱逐的deploy3将会在新节点准备好后,调度到新节点上。 图2 与低优先级的Pod亲和场景 在Pod间反亲和场景中,volcano-scheduler为减少对其它业务的影响,将不驱逐deploy2和deploy3,而是在新节点准备好后,调度到新节点上。 图3 与低优先级Pod反亲和场景
  • 基于优先级调度示例 如果集群中存在两个空闲节点,存在3个优先级的工作负载,分别为high-priority,med-priority,low-priority,首先运行high-priority占满集群资源,然后提交med-priority,low-priority的工作负载,由于集群资源全部被更高优先级工作负载占用,med-priority,low-priority的工作负载为pending状态,当high-priority工作负载结束,按照优先级调度原则,med-priority工作负载将优先调度。 通过priority.yaml创建3个优先级定义(PriorityClass),分别为:high-priority,med-priority,low-priority。 priority.yaml文件内容如下: apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 100 globalDefault: false description: "This priority class should be used for volcano job only." --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: med-priority value: 50 globalDefault: false description: "This priority class should be used for volcano job only." --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: low-priority value: 10 globalDefault: false description: "This priority class should be used for volcano job only." 创建PriorityClass: kubectl apply -f priority.yaml 查看优先级定义信息。 kubectl get PriorityClass 回显如下: NAME VALUE GLOBAL-DEFAULT AGE high-priority 100 false 97s low-priority 10 false 97s med-priority 50 false 97s system-cluster-critical 2000000000 false 6d6h system-node-critical 2000001000 false 6d6h 创建高优先级工作负载high-priority-job,占用集群的全部资源。 high-priority-job.yaml apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: priority-high spec: schedulerName: volcano minAvailable: 4 priorityClassName: high-priority tasks: - replicas: 4 name: "test" template: spec: containers: - image: alpine command: ["/bin/sh", "-c", "sleep 1000"] imagePullPolicy: IfNotPresent name: running resources: requests: cpu: "1" restartPolicy: OnFailure 执行以下命令下发作业: kubectl apply -f high_priority_job.yaml 通过 kubectl get pod 查看Pod运行信息,如下: NAME READY STATUS RESTARTS AGE priority-high-test-0 1/1 Running 0 3s priority-high-test-1 1/1 Running 0 3s priority-high-test-2 1/1 Running 0 3s priority-high-test-3 1/1 Running 0 3s 此时,集群节点资源已全部被占用。 创建中优先级工作负载med-priority-job和低优先级工作负载low-priority-job。 med-priority-job.yaml apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: priority-medium spec: schedulerName: volcano minAvailable: 4 priorityClassName: med-priority tasks: - replicas: 4 name: "test" template: spec: containers: - image: alpine command: ["/bin/sh", "-c", "sleep 1000"] imagePullPolicy: IfNotPresent name: running resources: requests: cpu: "1" restartPolicy: OnFailure low-priority-job.yaml apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: priority-low spec: schedulerName: volcano minAvailable: 4 priorityClassName: low-priority tasks: - replicas: 4 name: "test" template: spec: containers: - image: alpine command: ["/bin/sh", "-c", "sleep 1000"] imagePullPolicy: IfNotPresent name: running resources: requests: cpu: "1" restartPolicy: OnFailure 执行以下命令下发作业: kubectl apply -f med_priority_job.yaml kubectl apply -f low_priority_job.yaml 通过 kubectl get pod 查看Pod运行信息,集群资源不足,Pod处于Pending状态,如下: NAME READY STATUS RESTARTS AGE priority-high-test-0 1/1 Running 0 3m29s priority-high-test-1 1/1 Running 0 3m29s priority-high-test-2 1/1 Running 0 3m29s priority-high-test-3 1/1 Running 0 3m29s priority-low-test-0 0/1 Pending 0 2m26s priority-low-test-1 0/1 Pending 0 2m26s priority-low-test-2 0/1 Pending 0 2m26s priority-low-test-3 0/1 Pending 0 2m26s priority-medium-test-0 0/1 Pending 0 2m36s priority-medium-test-1 0/1 Pending 0 2m36s priority-medium-test-2 0/1 Pending 0 2m36s priority-medium-test-3 0/1 Pending 0 2m36s 删除high_priority_job工作负载,释放集群资源,med_priority_job会被优先调度。 执行 kubectl delete -f high_priority_job.yaml 释放集群资源,查看Pod的调度信息,如下: NAME READY STATUS RESTARTS AGE priority-low-test-0 0/1 Pending 0 5m18s priority-low-test-1 0/1 Pending 0 5m18s priority-low-test-2 0/1 Pending 0 5m18s priority-low-test-3 0/1 Pending 0 5m18s priority-medium-test-0 1/1 Running 0 5m28s priority-medium-test-1 1/1 Running 0 5m28s priority-medium-test-2 1/1 Running 0 5m28s priority-medium-test-3 1/1 Running 0 5m28s
  • 监控 在此处,您可以方便地查看节点在近1小时、近8小时、近24小时以及自定义时间段内各维度资源的使用情况。如需查看更多监控信息,请单击“查看全部仪表盘”,跳转至“仪表盘”页面,相应指导请参见使用仪表盘。 图5 节点监控 CPU相关指标 CPU:节点的CPU非空闲时间所占的平均比例。 CPU分配率:节点上所有容器对CPU的Request之和除以节点的CPU总核数。 节点CPU单核使用率:节点上每个CPU核非空闲时间各自所占的比例。 内存相关指标 内存使用率:节点的内存使用量除以节点的内存总量。 内存分配率:节点上所有容器对内存的 Request 之和占节点的内存总量的比例。 网络相关指标 网络流出速率:节点上的物理网卡在不同的时间段的每秒钟发送的字节数。 网络流入速率:节点上的物理网卡在不同的时间段的每秒钟接收的字节数。 网络发送丢包率:节点的物理网卡网络发送丢包速率。 网络接收丢包率:节点的物理网卡网络接收丢包率。 磁盘相关指标 磁盘读取速率:节点上的每个文件系统在不同的时间段的每秒钟读取的字节数。 磁盘写入速率:节点上的每个文件系统在不同的时间段的每秒钟写入的字节数。 磁盘使用率:节点上的每个文件系统在不同的时间段已使用的空间所占各自总空间的比例。 Pod相关指标 Pod CPU使用率:节点上每个Pod在不同的时间段的CPU使用量占它们的CPU Limit量的比例。 Pod内存使用率:节点上每个Pod在不同的时间段的内存使用量占它们的内存Limit量的比例。 Pod状态数量趋势:节点上在不同的时间段分别处于不可用、未就绪、运行中、已完成或其他的状态 Pod 数量之和。 Pod数量变化趋势:节点上所有的 Pod 在不同的时间段的数量。 其他指标 节点平均负载:节点的平均负载是指在一定时间内,节点上正在运行的进程数量的平均值。即节点上正在运行的进程数量是否过多,是否超出了节点的处理能力。通常情况下,节点平均负载应该保持在一个合理的范围内,以确保节点的稳定性和可靠性。 Iptables 连接数:连接跟踪表的最大条目数和当前已分配的条目数。
  • 概览 单击节点名称,您可以方便地查看节点资源概况,包括节点状态、Pod数量以及异常事件。此外,还可以浏览近一小时的监控概览,其中包括CPU使用率、内存使用率和网络流入/流出速率这些常见的监控指标。 图2 资源概况和监控概览 同时,概览页面还提供了Pod使用趋势功能,您可以从中了解节点中各Pod的CPU使用率、CPU使用量、内存使用率和内存使用量(在图表左上角切换对应指标),并且支持查看降序Top5和升序Top5数据(在图表右上角进行切换)。 图3 Pod使用趋势 如需了解更多指标,请前往监控页面查看。
  • 节点列表 节点列表中包含节点名称、状态、IP地址、容器组(已分配/总额度)、CPU申请比率/限制比率/使用率,以及内存申请比率/限制比率/使用率等信息。 图1 节点列表 您可以通过在列表上方按照节点名称、状态、私有地址和公网地址进行筛选,快速找到需要的节点。您也可以单击“导出”按钮导出全部节点数据,或者选择部分节点进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 当节点的CPU限制比率或内存限制比率超过100%时,意味着节点资源超分,节点上的负载限制值(可使用的最大值)之和已经超过了节点规格。如果负载占用资源过高,可能会导致节点异常。
  • Pod列表 Pod列表中包含了实例名称、状态、命名空间、实例IP、所在节点、重启次数、CPU申请/限制、内存申请/限制,以及CPU和内存使用率等详细信息。 图4 Pod列表 您可以通过在列表上方按照实例名称、状态、命名空间、实例IP和所在节点进行筛选,快速找到需要的实例。您也可以单击“导出”按钮来导出全部实例数据,或者选择部分实例进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 单击实例名称可以查看实例的详细监控数据。更多相关内容,请参见Pod。
  • 升级 您可以通过CCE控制台实现无状态工作负载、有状态工作负载、守护进程集的快速升级。 本文以无状态工作负载为例说明如何进行升级。 若需要更换镜像或镜像版本,您需要提前将镜像上传到 容器镜像服务 ,上传方法请参见通过Docker客户端上传镜像。 登录CCE控制台,进入一个已有的集群,在左侧导航栏中选择“工作负载”。 选择“无状态负载”页签,单击待升级工作负载后的“升级”。 暂不支持批量升级多个工作负载。 有状态工作负载升级时,若升级类型为替换升级,需要用户手动删除实例后才能升级成功,否则界面会始终显示“处理中”。 请根据业务需求进行工作负载的升级,参数设置方法与创建工作负载时一致。 更新完成后,单击“升级工作负载”,并手动确认YAML文件差异后提交升级。
  • 监控 您可以通过CCE控制台查看工作负载和容器组的CPU和内存占用情况,以确定需要的资源规格。本文以无状态工作负载为例说明如何使用监控功能。 登录CCE控制台,进入一个已有的集群,在左侧导航栏中选择“工作负载”。 选择“无状态负载”页签,单击已创建工作负载后的“监控”。在监控页面,可查看工作负载的CPU利用率和物理内存使用率。 图1 查看无状态工作负载监控 单击工作负载名称,可在“实例列表”中单击某个实例的“监控”按钮,查看相应实例的CPU使用率、内存使用率。
  • 日志 您可以通过“日志”功能查看无状态工作负载、有状态工作负载、守护进程集、普通任务的日志信息。本文以无状态工作负载为例说明如何查看日志。 查看日志前请将浏览器与后端服务器时间调成一致。 登录CCE控制台,进入一个已有的集群,在左侧导航栏中选择“工作负载”。 选择“无状态负载”页签,单击工作负载后的“日志”。 在弹出的“日志”窗口中可以查看容器日志信息。 图2 查看无状态工作负载日志 当前显示的日志内容为容器标准输出日志,不具备持久化和高阶运维能力,如需使用更完善的日志能力,可使用日志管理功能。如工作负载开启了AOM采集标准输出的功能(默认开启),可前往AOM查阅更多的负载日志,详情请参见通过ICAgent采集容器日志(不推荐)。
共100000条