云服务器内容精选
-
操作场景 容器镜像服务企业版支持与其他仓库之间同步容器镜像,可实现单点推送及全球自动同步分发,方便企业在全球多个地域快速部署更新容器业务。当前支持与如下类型仓库之间同步: 容器镜像服务:即SWR共享仓库中的镜像。 容器镜像服务企业版:支持华为云不同地域的企业仓库以及客户基于开源harbor搭建的私有仓库。 镜像同步功能允许用户自定义创建同步规则,可指定某个仓库内的部分资源同步至另一个仓库内的命名空间。例如,用户可选择同步资源类型(容器镜像、Helm Chart、或是全部同步),通过正则表达式过滤镜像及版本,可选择是否覆盖已有的同名镜像,避免历史数据覆盖丢失。
-
设置访问控制与域名解析 公网访问 设置公网访问控制和域名解析,您可以使用公网并通过自定义域名的方式访问SWR仓库。配置公网的访问控制,详情请参考配置公网访问。 进入云解析服务控制台。 在左侧树状导航栏,选择“公网域名”, 进入域名列表页面。 【可选】如果没有自定义域名后缀的公网域名, 单击右上角的“创建公网域名”,输入域名,单击“确定”。 单击您的域名名称进入详情页。 单击“添加记录集”,进入“添加记录集”页面设置参数,然后单击“确定”。 表1 添加记录集参数设置 参数 配置 主机记录 输入自定义域名的前缀。 类型 CNAME。 线路类型 指域名访问者所在的地区和使用的运营商网络,本例中为全网默认。 TTL 为缓存时间,数值越小,修改记录各地生效时间越快,默认为5分钟。 值 设置为仓库的默认域名。 内网访问 设置内网访问控制和内网域名,您可以在指定VPC内的云服务器通过内网拉取SWR仓库中的镜像。配置内网访问控制,详情请参考配置内网访问。 进入云解析服务控制台。 在左侧树状导航栏,选择“内网域名”, 进入域名列表页面。 【可选】如果没有自定义域名后缀的内网域名, 单击右上角的“创建内网域名”,输入域名,选择区域,以及与仓库打通网络的VPC,单击“确定”。 单击您的域名名称进入详情页。 单击“添加记录集”,进入“添加记录集”页面设置参数,然后单击“确定”。 表2 添加记录集参数设置 参数 配置 主机记录 输入自定义域名的前缀 类型 CNAME 线路类型 指域名访问者所在的地区和使用的运营商网络,本例中为全网默认。 TTL 为缓存时间,数值越小,修改记录各地生效时间越快,默认为5分钟。 值 设置为仓库的默认域名。
-
前提条件 需要开通云服务:云解析服务 DNS、云证书管理服务(Cloud Certificate Manager,CCM)。 欲使用域名管理功能,您的账户需要具备查询证书列表权限(scm:cert:list)以及证书导出的权限(scm:cert:export)。 已拥有域名。您可以通过域名注册服务注册域名,详细介绍请参见什么是域名注册服务?。 如果您的SWR仓库在中国境内,那么如果您要在公网环境中使用自定义域名,则域名需要备案。如果您的SWR仓库在境外,则域名无需备案。 已为域名签发证书。您可通过云证书管理CCM服务购买证书,并确认已绑定仓库需要使用的自定义域名。
-
操作步骤 登录云容器引擎CCE控制台。 在左侧导航栏上单击“插件市场”。 在插件市场页面上方搜索框输入“cosign”并搜索。 在下方的搜索结果中找到“容器镜像签名验证”插件,单击“安装”。 填写“安装插件”页面的相关参数。 选择集群:选择镜像所在集群。该插件只能在K8S V1.23及以上版本集群上安装。 对集群某个命名空间进行镜像验签时,需要先为该命名空间添加 policy.sigstore.dev/include:true 标签。 选择版本:选择插件版本 规格配置 单仓库:当前插件只支持在1个仓库上使用。 高可用:当前插件支持在2个仓库上使用。 自定义:自定义仓库数、CPU配额、容器配额。 表1 swr-cosign插件规格配置 参数 参数说明 插件规格 该插件可配置“单实例”、“高可用”或“自定义”规格。 实例数 选择上方插件规格后,显示跟插件规格匹配的实例数。 选择“自定义”规格时,您可根据需求调整插件实例数。 容器 选择“自定义”规格时,您可根据需求调整插件实例的容器规格。 参数配置 KMS密钥:选择一个创建非对称密钥中创建好的密钥。 验签镜像:单击,选择需要验签的镜像。 表2 swr-cosign插件参数配置 参数 参数说明 KMS密钥 选择一个密钥,仅支持 EC_P256、EC_P384、SM2 类型的密钥。 您可以前往密钥管理服务新增密钥。 验签镜像 验签镜像地址通过正则表达式进行匹配,例如填写docker.io/**表示对docker.io镜像仓库的镜像进行验签。如需对所有镜像验签,请填写**。 填写完成后,单击“安装”。 待插件安装完成后,选择对应的集群,然后单击左侧导航栏的“插件中心”,可筛选“已安装插件”查看相应的插件。
-
添加命名空间标签 登录容器镜像服务控制台,单击左侧菜单栏“企业版”。 选中要添加命名空间标签的仓库,单击仓库名称,进入仓库详情页。 单击仓库详情页左侧导航栏“命名空间”,进入命名空间列表页。单击页面右上角的图标,以列表形式展示命名空间列表。 选择要添加标签的命名空间,单击右侧“标签管理”,进入标签管理页面。 图1 命名空间管理列表页 在标签管理页面,单击,新增一个标签。 图2 标签管理 参考标签命名规则,填写标签的键和值。
-
使用Helm客户端上传及下载Helm Chart 安装Helm客户端 本文以在Linux操作系统的节点上安装为例,如在其他平台安装请下载对应安装包。 依次执行以下命令,下载并安装Helm客户端。关于安装Helm的更多信息,请参见Installing Helm。 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh “get_helm.sh”脚本会自动拉取最新的Helm版本进行安装,如需安装其他版本,请从官方下载需要的Helm版本。 推送Helm Chart 安装Helm Push插件。 在安装Helm Push插件前,需要预先安装Git。 helm plugin install https://github.com/chartmuseum/helm-push 在节点上执行如下命令,创建一个Chart。 helm create [Chart名称] 示例:helm create chart-demo 执行如下命令,推送指定目录至Chart仓库。 helm push [Chart名称] [本地仓库名称] 示例: helm push chart-demo group 您还可以将Chart文件打包为tgz压缩包,然后直接上传。 helm push [Chart名称]-[Chart版本].tgz [本地仓库名称] 示例: tar zcvf chart-demo-1.0.0.tgz chart-demo/ # 压缩Chart文件 helm push chart-demo-1.0.0.tgz group # 上传Chart压缩包 下载Helm Chart 在节点上执行如下命令,更新本地仓库Chart信息。 helm repo update 下载指定版本Chart。 helm pull [本地仓库名称]/[Chart名称] --version [Chart版本] 示例: helm pull group/chart-demo --version 1.0.0
-
背景信息 Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群中的资源,包括Pod、Service、Deployment、StatefulSet、Job等等。这些资源种类繁多,且分散的kubernetes应用配置文件难以管理、编辑和更新,因此云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。 Chart是描述相关的一组Kubernetes集群内资源的文件集合。 Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。 容器镜像服务企业版支持Helm客户端实现Chart的上传和下载。
-
创建签名规则 登录容器镜像服务控制台,单击左侧菜单栏“企业版”,然后单击仓库名称进入仓库详情页面。 在左侧导航栏选择“ 镜像签名”。 在右上角单击“创建签名规则”。 填写具体规则。 表2 参数说明 参数名称 说明 示例 规则名称 镜像签名规则的名称。 SignatureRule 命名空间 选择要签名的镜像所在的命名空间。 library 规则范围 镜像:镜像名称,默认使用正则表达式。单击可手动选择镜像。 正则表达式规则可填写如nginx-*、{repo1, repo2} 等,其中: *:匹配不包含路径分隔符“/”的任何字段。 **:匹配包含路径分隔符“/”的任何字段。 ?:匹配任何单个非“/”的字符。 {选项1, 选项2, ...}:同时匹配多个选项。匹配上其中一个即可。 版本:镜像的版本,同样使用正则表达式,匹配规则与镜像名称相同。 nginx-*:表示匹配“nginx-”开头的镜像。 签名方式 当前支持使用KMS签名。 KMS 签名Key 选择在创建非对称密钥中创建的密钥。 key1 触发模式 手动:手动触发,规则创建完成后需要您手动单击执行。 事件触发 + 手动:事件触发指当有新镜像上传到仓库且符合匹配规则时触发镜像签名。 事件触发 + 手动 规则描述 规则的描述信息。 - 图2 创建签名规则 单击“确定”完成规则创建。
-
创建非对称密钥 登录数据加密服务控制台。 在左侧导航栏选择“密钥管理”,单击右上角的“创建密钥”。 在“创建密钥”对话框中配置参数,然后单击“确定”。 镜像签名功能需要非对称密钥算法的支持,创建密钥时,密钥算法需选择EC、RSA或SM2类型,详情请见表1。其他参数配置请参见创建密钥。 图1 创建密钥 表1 容器镜像服务支持的密钥算法类型 密钥类型 算法类型 密钥规格 说明 用途 非对称密钥 RSA RSA_2048 RSA_3072 RSA_4096 RSASSA_PSS_SHA_256 RSASSA_PSS_SHA_384 RSASSA_PSS_SHA_512 RSASSA_PKCS1_V1_5_SHA_256 RSASSA_PKCS1_V1_5_SHA_384 RSASSA_PKCS1_V1_5_SHA_512 RSA非对称密钥 小量数据的加解密或数字签名。 非对称密钥 ECC EC_P256 ECDSA_SHA_256 EC_P384 ECDSA_SHA_384 椭圆曲线密码,使用NIST推荐的椭圆曲线 数字签名 非对称密钥 SM2 SM2 国密SM2非对称密钥 小量数据的加解密或数字签名。
-
创建命名空间 登录容器镜像服务控制台,单击左侧菜单栏的“企业版”,在“仓库管理”页面单击您的仓库名称进入仓库。 在左侧导航栏单击“命名空间”。 在右上角单击“创建命名空间”。 填写命名空间名称,选择命名空间类型。 图1 创建命名空间 公有命名空间:允许任何用户登录后下载命名空间内的制品,如需其他操作需在IAM上为用户授权。 私有命名空间:需在IAM上为用户授权才可以对命名空间内的制品进行操作。 单击“确定”。 命名空间创建成功后,您可以选择列表视图或卡片视图查看命名空间详情,在右上角单击或图标进行视图切换。
-
使用华为云开源镜像配置yum源 yum,是一个专门为了解决包的依赖关系而存在的软件包管理器。如同 Windows 系统上可以通过各类“软件管家”实现软件的一键安装、升级和卸载,Linux 系统也提供有这样的工具,这就是 yum。 从华为云开源镜像站获取yum源的方式如下: 进入开源镜像站首页。 选择“操作系统类”,筛选镜像;或者直接搜索目标镜像。 单击镜像卡片,根据弹出界面描述配置使用操作系统yum源;或者跳转至下载目录页面,下载操作系统镜像。以CentOS为例,如下图所示。 根据界面配置方法,可以配置使用操作系统yum源。 CentOS-9 stream 的镜像地址为:https://repo.huaweicloud.com/centos-stream/ 1、备份配置文件: cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2、配置下列方案。 方案: 下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下,选择 CentOS 版本:CentOS 8-stream/CentOS 7 执行如下命令: wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-anon.repo 3、执行yum clean all清除原有 yum 缓存。 4、执行yum makecache(刷新缓存)或者yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)。 CentOS 8和CentOS 6 及以下版本已被官网源下线, 若需使用, 请参考 CentOS-Vault 进行配置。 常见镜像源在华为云ECS中的使用请参见镜像源管理。 父主题: 使用与配置华为云开源镜像
-
步骤三:本地验证 启动docker容器 docker run -u 1003:1003 -p 8000:8000 custom_container_event_example:latest 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/init路径 curl -XPOST -H 'Content-Type: application/json' localhost:8000/init 按照模块代码中返回 Hello init 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/invoke路径 curl -XPOST -H 'Content-Type: application/json' -d '{"message":"HelloWorld"}' localhost:8000/invoke 按照模块代码中返回 Hello invoke 在容器启动端口可以看到 Listening on http://localhost:8000 receive {} receive { message: 'HelloWorld' } 或者使用docker logs命令获取容器的日志
-
Notebook自定义镜像故障基础排查 当制作的自定义镜像使用出现故障时,请用户按照如下方法排查: 用户自定义镜像没有ma-user用户及ma-group用户组; 用户自定义镜像中/home/ma-user目录,属主和用户组不是ma-user和ma-group; 用户自定义镜像必须满足用户目录/home/ma-user权限为750,不能为其他权限; 用户自定义镜像使用远程SSH功能,OpenSSH版本要兼容或高于8.0; 用户制作的自定义镜像,在本地执行docker run启动,无法正常运行; 用户自行安装了Jupyterlab服务导致冲突的,需要用户本地使用Jupyterlab命令罗列出相关的静态文件路径,删除并且卸载镜像中的Jupyterlab服务; 用户自己业务占用了开发环境官方的8888、8889端口的,需要用户修改自己的进程端口号; 用户的镜像指定了PYTHONPATH、sys.path导致服务启动调用冲突的,需在实例启动后,再指定PYTHONPATH、sys.path; 用户使用了已开启sudo权限的专属池,使用自定义镜像时,sudo工具未安装或安装错误; 用户使用的cann、cuda环境有兼容性问题; 用户的docker镜像配置错误、网络或防火墙限制、镜像构建问题(文件权限、依赖缺失或构建命令错误)等原因导致的。 父主题: Notebook中使用自定义镜像
-
创建AI应用的自定义镜像规范 针对您本地开发的模型,在制作AI应用的自定义镜像时,需满足ModelArts定义的规范。 自定义镜像中不能包含恶意代码。 自定义镜像大小不超过50GB。 对于同步请求模式的AI应用,如果预测请求时延超过60s,会造成请求失败,甚至会有服务业务中断的风险,预测请求时延超过60s时,建议制作异步请求模式的镜像。 镜像对外接口 设置镜像的对外服务接口,推理接口需与config.json文件中apis定义的url一致,当镜像启动时可以直接访问。下面是mnist镜像的访问示例,该镜像内含mnist数据集训练的模型,可以识别手写数字。其中listen_ip为容器IP,您可以通过启动自定义镜像,在容器中获取容器IP。 请求示例 curl -X POST \ http://{listen_ip}:8080/ \ -F images=@seven.jpg 图1 listen_ip获取示例 返回示例 {"mnist_result": 7} (可选)健康检查接口 如果在滚动升级时要求不中断业务,那么必须在config.json文件中配置健康检查的接口,供ModelArts调用,在config.json文件中配置。当业务可提供正常服务时,健康检查接口返回健康状态,否则返回异常状态。 如果要实现无损滚动升级,必须配置健康检查接口。 自定义镜像如果需要在“在线服务”模块使用OBS外部存储挂载功能,需要新建一个OBS挂载专属目录如“/obs-mount/”,避免选择存量目录覆盖已有文件。OBS挂载仅开放对挂载目录文件新增、查看、修改功能不支持删除挂载目录文件对象,若需要删除文件请到OBS并行文件系统中手动删除。 健康检查接口示例如下。 URI GET /health 请求示例curl -X GET \ http://{listen_ip}:8080/health 响应示例 {"health": "true"} 状态码 表1 状态码 状态码 编码 状态码说明 200 OK 请求成功 日志文件输出 为保证日志内容可以正常显示,日志信息需要打印到标准输出。 镜像启动入口 如果需要部署批量服务,镜像的启动入口文件需要为“/home/run.sh”,采用CMD设置默认启动路径,例如Dockerfile如下: CMD ["sh", "/home/run.sh"] 镜像依赖组件 如果需要部署批量服务,镜像内需要安装python、jre/jdk、zip等组件包。 (可选)保持Http长链接,无损滚动升级 如果需要支持滚动升级的过程中不中断业务,那么需要将服务的Http的“keep-alive”参数设置为200s。以gunicorn服务框架为例,gunicorn缺省情形下不支持keep-alive,需要同时安装gevent并配置启动参数“--keep-alive 200 -k gevent”。不同服务框架参数设置有区别,请以实际情况为准。 (可选)处理SIGTERM信号,容器优雅退出 如果需要支持滚动升级的过程中不中断业务,那么需要在容器中捕获SIGTERM信号,并且在收到SIGTERM信号之后等待60秒再优雅退出容器。提前优雅退出容器可能会导致在滚动升级的过程中业务概率中断。要保证容器优雅退出,从收到SIGTERM信号开始,业务需要将收到的请求全部处理完毕再结束,这个处理时长最多不超过90秒。例如run.sh如下所示: #!/bin/bash gunicorn_pid="" handle_sigterm() { echo "Received SIGTERM, send SIGTERM to $gunicorn_pid" if [ $gunicorn_pid != "" ]; then sleep 60 kill -15 $gunicorn_pid # 传递 SIGTERM 给gunicorn进程 wait $gunicorn_pid # 等待gunicorn进程完全终止 fi } trap handle_sigterm TERM 父主题: 使用自定义镜像创建AI应用(推理部署)
-
制作新镜像 连接容器镜像服务。 登录容器镜像服务控制台。 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。 图1 获取登录指令 此处生成的登录指令有效期为24小时,若需要长期有效的登录指令,请参见获取长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可以使用。 登录指令末尾的域名为镜像仓库地址,请记录该地址,后面会使用到。 在安装容器引擎的机器中执行上一步复制的登录指令。 登录成功会显示“Login Succeeded”。 拉取基础镜像或第三方镜像(此处以基础镜像举例,第三方镜像直接替换镜像地址)。 拉取ModelArts提供的公共镜像(请参考预置镜像)。 docker pull swr.cn-north-4.myhuaweicloud.com/atelier/notebook2.0-pytorch-1.4-kernel-cp37:3.3.3-release-v1-20220114 编写Dockerfile。 vim一个Dockerfile,如果使用的基础镜像是ModelArts提供的公共镜像,Dockerfile的具体内容可参考Dockerfile文件(基础镜像为ModelArts提供)。 如果使用的基础镜像是第三方镜像(非ModelArts提供的公共镜像),Dockerfile文件中需要添加uid为1000的用户ma-user和gid为100的用户组ma-group,具体可参考Dockerfile文件(基础镜像为非ModelArts提供)。 本例的Dockerfile将基于PyTorch基础镜像安装pytorch 1.8, ffmpeg 3和gcc 8,构建一个面向AI任务的镜像。 构建镜像 使用docker build命令从Dockerfile构建出一个新镜像。命令参数解释如下: “-t” 指定了新的镜像地址,包括{局点信息}/{组织名称}/{镜像名称}:{版本名称},请根据实际填写。建议使用完整的swr地址,因为后续的调试和注册需要使用。 “-f ”指定了Dockerfile的文件名,根据实际填写。 最后的“ . ”指定了构建的上下文是当前目录,根据实际填写。 docker build -t swr.cn-north-4.myhuaweicloud.com/sdk-test/pytorch_1_8:v1 -f Dockerfile . 图2 构建成功
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格