私有镜像分享
概述
镜像共享功能支持用户将自己的镜像共享给其他用户,其他用户可以查看并拉取被共享的镜像。
创建镜像共享
1. 进入 容器镜像服务控制台。
2. 点击已开通的企业版实例名称。
3. 左侧导航栏点击 分发管理 - 镜像共享,在 共享给他人 标签页点击 创建镜像共享。
4. 在创建页面填写共享目标用户,此处填写的是对方用于docker login的用户名。选择命名空间、镜像仓库、截止时间并填写描述,点击 确定 完成创建。
5. 创建完成后,可在列表页面查看创建的镜像共享记录。
6. 操作栏的 编辑 按钮可以修改镜像共享记录的截止时间和描述。禁用/启用 按钮可以修改镜像共享记录的启用状态。删除 按钮可以删除镜像共享记录。
查看他人共享镜像
1. 进入 容器镜像服务控制台。
2. 点击已开通的企业版实例名称。
3. 左侧导航栏点击 分发管理 - 镜像共享,点击 他人共享 标签页即可查看他人共享给自己的镜像列表。
4. 点击他人共享镜像的仓库名称,可查看镜像拉取的操作指南以及镜像版本。用户不可以对他人共享的镜像进行推送操作。
同实例跨命名空间同步
在同一个实例中,不同的开发团队限定使用着各自的命名空间,当某些镜像需要跨命名空间分享时,可以配置同步规则,实现同实例跨命名空间同步,本文介绍在同一个实例中采用手动和自动方式进行跨命名空间同步镜像。
前提条件
使用自动或手动方式同步镜像时,请确保您使用的实例是企业版。个人版实例不支持此功能。
自动同步镜像
通过配置自动同步规则,实现在源命名空间下符合条件的镜像仓库中上传镜像后,自动触发同步操作,将镜像从源命名空间同步到目标命名空间。
注意:自动同步操作只会同步设置规则后符合条件的镜像,对于规则设置前已经存在的镜像,无法实现自动同步。
设置自动同步镜像规则步骤如下:
1. 登录容器镜像控制台;
2. 在顶部菜单栏,选择所需资源池;
3. 在实例页面中选择需要同步的实例;
4. 在企业版实例管理页面的左侧菜单上选择“分发管理”>“镜像同步”,选择“自动同步规则”选项卡,点击左上角的“创建规则”;
5. 在“创建规则”对话框中,配置同步规则,然后点击“确定”,实现规则创建,各配置参数说明如下:
注意:对于同实例跨命名空间的自动同步规则设定,目标命名空间不能作为其他规则的目标命名空间和不能作为其他规则的源命名空间。例如目前有两个命名空间proj1与proj2,分别定为规则1的源命名空间与目标命名空间,当后续设定其他规则时,proj1可继续设定为源命名空间,但不能设定为目标命名空间;proj2则既不能设定为源命名空间,也不能设定为目标命名空间。
参数 | 说明 |
名称 | 自定义同步规则的名称 |
描述 | 自定义同步规则的补充描述信息,备注信息等 |
同步内容 | 同步的内容,可选择“镜像”与Chart |
源实例 | 固定为当前实例 |
源命名空间 | 选择源实例中的命名空间,此项为必填 |
源仓库 | 选择源命名空间下的镜像仓库,可为空,为空时则包含命名空间下的所有镜像仓库 |
源版本 | 选择需要同步的镜像版本,可为空,为空时则同步所有版本的镜像 |
目标实例 | 选择目标实例所在的地域和实例名称,由于是同实例跨命名空间同步,此处选择当前实例 |
目标命名空间 | 选择要同步到的命名空间 |
覆盖 | 遇到同一镜像仓库下、同一版本的镜像时,是否进行覆盖,可选是或否 |
当有新的容器镜像推送到符合上述规则的仓库中,会自动触发同步任务。
在企业版实例管理页面的左侧菜单上选择“分发管理”>“镜像同步”, 选择“自动同步规则”的选项卡,点击对应的同步规则,在规则详情页的下方查看任务执行情况。
手动同步镜像
通过创建手动同步任务,手动将镜像从源命名空间同步到目标命名空间。
1. 登录容器镜像控制台;
2. 在顶部菜单栏,选择所需资源池;
3. 在实例页面中选择需要同步的实例;
4. 在企业版实例管理页面的左侧菜单上选择“分发管理”>“镜像同步”,选择“手动同步记录”的选项卡,点击左上角的“创建同步任务”;
5. 在“创建同步任务”对话框中,配置同步任务,然后点击“确定”,实现任务创建;
6. 任务创建完成后,可在“手动同步记录”的选项卡中查看任务执行情况。
同账号跨实例同步
通过配置同步规则,可以实现同一账号下容器镜像从源实例同步至目标实例。若目标实例与源实例位于不同资源池,可以实现跨资源池的镜像同步。本文介绍如何在同账号内采用手动和自动的方式同步实例。
前提条件
使用自动或手动方式同步镜像时,请确保您使用的实例是企业版。个人版实例不支持此功能。
自动同步镜像
通过配置自动同步规则,实现在源实例下符合条件的镜像仓库中上传镜像后,自动触发同步操作,将镜像从源实例同步到同账号任意资源池下目标实例。
注意:自动同步操作只会同步设置规则后符合条件的镜像,对于规则设置前已经存在的镜像,无法实现自动同步。
设置自动同步镜像规则步骤如下:
1. 登录容器镜像控制台;
2. 在顶部菜单栏,选择所需资源池;
3. 在实例页面中选择需要同步的实例;
4. 在企业版实例管理页面的左侧菜单上选择“分发管理”>“镜像同步”,选择“自动同步规则”的选项卡,点击左上角的“创建规则”;
5. 在“创建规则”对话框中,配置同步规则,然后点击“确定”,实现规则创建,各配置参数说明如下:
注意:对于跨实例的自动同步规则设定,目标实例和命名空间不能作为其他规则的目标实例和命名空间和不能作为其他规则的源实例和命名空间。例如目前有实例ins1命名空间proj1与实例ins2命名空间proj2,分别定为规则1的源信息与目标信息,当后续设定规则2或其他规则时,inst1-proj1可继续设定为源信息,但不能设定为目标信息;ins2-proj2则既不能设定为源命信息,也不能设定为目标信息。
参数 | 说明 |
名称 | 自定义同步规则的名称 |
描述 | 自定义同步规则的补充描述信息,备注信息等 |
同步内容 | 同步的内容,可选择“镜像”与Chart |
源实例 | 固定为当前实例 |
源命名空间 | 选择源实例中的命名空间,此项为必填 |
源仓库 | 选择源命名空间下的镜像仓库,可为空,为空时则包含命名空间下的所有镜像仓库 |
源版本 | 选择需要同步的镜像版本,可为空,为空时则同步所有版本的镜像 |
目标实例 | 选择目标实例所在的地域和实例名称,由于是同实例跨命名空间同步,此处选择当前实例 |
目标命名空间 | 选择要同步到的命名空间 |
覆盖 | 遇到同一镜像仓库下、同一版本的镜像时,是否进行覆盖,可选是或否 |
当有新的容器镜像推送到符合上述规则的仓库中,会自动触发同步任务。
在企业版实例管理页面的左侧菜单上选择“分发管理”>“镜像同步”, 选择“自动同步规则”的选项卡,点击对应的同步规则,在规则详情页的下方查看任务执行情况。
手动同步镜像
通过创建手动同步任务,手动将镜像从源实例同步到目标实例。
1. 登录容器镜像控制台;
2. 在顶部菜单栏,选择所需资源池;
3. 在实例页面中选择需要同步的实例;
4. 在企业版实例管理页面的左侧菜单上选择“分发管理”>“镜像同步”,选择“手动同步记录”的选项卡,点击左上角的“创建同步任务”;
5. 在“创建同步任务”对话框中,配置同步任务,然后点击“确定”,实现任务创建
任务创建完成后,可在“手动同步记录”的选项卡中查看任务执行情况。
按需加载容器镜像
传统容器运行需要将全量镜像数据下载后再解包,然而容器启动可能仅使用其中部分的内容,导致容器启动耗时长。通过容器镜像服务企业版的按需加载功能,您可以在业务部署中使用加速镜像版本,实现镜像数据免全量下载和在线解压,大幅提升应用分发效率,享受极致的弹性体验。本文介绍如何按需加载容器镜像。
前提条件
• 已开通企业版镜像服务;
• 已开通CCSE、ECI或CCSEOne集群。
背景信息
通过按需加速功能,您可以在部署业务工作负载时使用加速镜像,实现镜像数据免全量下载和在线解压,大幅度提升应用分发效率,缩短容器启动时间,减少容器镜像所消耗的存储空间。加速效果与镜像大小以及网络等因素有关。
使用限制
在创建CCSE实例时,选用Containerd作为容器运行时的集群支持使用镜像加速,而对于选用Docker作为运行时的实例则不支持使用。
转换加速镜像
通过在镜像仓库或者在命名空间级别启用自动转换加速镜像,在上传镜像后会自动转换成加速镜像。镜像转换时间取决于镜像大小,对原始镜像不做任何变更改动。
说明:转换后的加速镜像与原始镜像所在的命名空间及镜像仓库保持一致,仅镜像版本(即镜像的Tag)比原始镜像多增加了“accelerated”后缀。
注意:在已有命名空间或镜像仓库中开启镜像加速自动转换,所覆盖的命名空间或镜像仓库下的存量镜像则不会自动转换。
1. 登录容器镜像控制台;
2. 在顶部菜单栏,选择所需资源池;
3. 在实例页面中选择指定的企业版实例
4. 在命名空间中开启镜像加速:
1. 在企业版实例管理页面的左侧菜单上选择“容器镜像”>“命名空间”;
2. 在命名空间创建时,打开“开启镜像加速”开关,其余信息点填写完成后点击“创建“按钮;
3. 对于现存的命名空间,在命名空间列表中的“开启镜像加速”开关列中,打开开关;
5. 在镜像仓库中开启镜像加速:
1. 在企业版实例管理页面的左侧菜单上选择“容器镜像”>“镜像仓库”;
2. 在未开启镜像加速的命名空间下创建镜像仓库时,打开“开启镜像加速”开关,其余信息点填写完成后点击“创建”;
3. 对于现存的镜像仓库,在镜像仓库列表中,选择未开启镜像加速的命名空间下的镜像仓库,点击“编辑”,在编辑页面中打开“开启镜像加速”开关,然后点击“更新”按钮。
在启用镜像加速的命名空间或者镜像仓库中上传镜像,稍等片刻后,在镜像仓库的版本列表页中查看到已经转换完成的带“accelerated”后缀的加速镜像,转换时间受镜像自身大小影响。
使用加速镜像
在创建工作负载时,或者给现有的工作负载更替镜像时,在镜像版本选择框选用“是否加速镜像”一列为“是”的镜像,点击确认,则可使用加速镜像。
性能测试
现在选用busybox,centos,openjdk,tensorflow 5个镜像,分别对他们执行拉取,创建容器并执行pwd命令,观察他们的耗时
观察数据,可以发现在小镜像时accelerated的性能会略逊于oci,但是随着镜像大小逐渐增大的,acclerated的优势越来越明显,从镜像拉取,容器创建,启动容器这几方面来看:
1. accelerated在拉取镜时只需要拉取镜像的mainifest和config等少量内容,oci镜像则除上述两样数据外,还需要完整拉取镜像的各个层,这个时间差随镜像大小呈正相关性;
2. 在创建容器时,accelerated均比耗时要多,但是相差仅在300毫秒内;
3. 在运行容器时accelerated则需要按需从镜像仓库拉取所需要的镜像数据块,而oci则直接从磁盘中将层加载到文件系统中,在小镜像时oci占优,随镜像增大,accelerated的耗时变化不大,而oci则与镜像大小呈正相关。
4. 不过在实际运行中往往是直接运行一个容器,在拉了一个镜像后无需分步去创建及启动一个容器,创建及运行往往是“一气呵成”,因此其时间差往往控制在oci大概在200毫秒内,而accelerated在2秒内;
综上当一个镜像拉取时间在1~2s左右的,对这种镜像来说oci运行起来往往比accelerate的要快,到镜像大小增大,镜像拉取时间上升,这种按需加载的优势才会体现出来。
镜像p2p加速分发
概述
镜像 P2P 加速功能利用集群节点的带宽资源,在节点之间进行镜像分发,减少对容器镜像服务的压力,可以大幅提升镜像拉取速度,减少应用部署时间。
前提条件
• 安装 cube-p2p-acceleration插件
• 集群所使用的容器运行时为containerd,且containerd版本不低于1.6。
• 已创建容器镜像服务企业版实例。
使用步骤
安装插件
安装 cube-p2p-acceleration插件,目前有两种方式:
1. (推荐)登陆CCSE控制台,在 插件-插件市场 中找到 cube-p2p-acceleration插件并安装
2. 使用helm部署,参考命令:helm install RELEASE_NAME --set key=vaule https://registry-vpc-crs-huadong1.ctyun.cn/plugins/cube-p2p-acceleration:1.0.0 --namespace kube-system
配置参数
crsRegistries参数配置用户使用的容器镜像服务的内网实例地址,可配置多个,注意需要指定https协议。
注意,需要将样例修改为实际的实例地址,若实例地址配置不正确,则P2P加速插件无法加速对应的镜像拉取过程。
crsRegistries: - "https://registry-vpc-crs-huadong1.ctyun.cn" - "https://xxx-registry-vpc-huadong1.crs.ctyun.cn"
persistence参数配置数据存储。
persistence.nodeNames指定集群中若干节点的名称用于进行本地数据存储,建议设置5个。
persistence.directoryPath指定节点本地的数据存储目录路径,每个节点目录空间不小于8G。
注意,需要将样例修改为实际的节点名称,否则会导致插件安装失败。
若指定节点发生故障,会影响P2P加速插件功能。
persistence: nodeNames: - "ccse-nodename1" - "ccse-nodename2" - "ccse-nodename3" - "ccse-nodename4" - "ccse-nodename5" directoryPath: /p2p-data
P2P加速插件默认会占用每个节点的65001和40901端口进行请求代理和健康检查,
可通过proxyPort和healthCheckPort参数修改对应端口。
#### 代理端口 proxyPort: 65001 #### 健康检查端口 healthCheckPort: 40901
加速验证
P2P加速插件安装后,当集群中的工作负载拉取对应容器镜像仓库的镜像时会默认进行加速。当工作负载成功拉取镜像后,
可登录其所在节点中名称包含”cube-p2p-acceleration-dfdaemon“的容器组,通过以下命令查看日志:
grep "peer task done" /var/log/dragonfly/daemon/core.log
有形如以下的日志输出则说明镜像拉取成功被P2P插件加速:
{
"level":"info",
"ts":"2023-04-10 07:31:02.897",
"caller":"peer/peertask_conductor.go:1330",
"msg":"peer task done, cost: 6483ms",
"peer":"10.244.0.5-1-be485ea5-6d54-4f56-8f56-bdbe76ec8469",
"task":"0fe34e3fcb64d49b09fe7c759f47a373b7590fe4dbe1da6d9c732eee516e4cb4",
"component":"PeerTask",
"trace":"daa2ffd1021779dfbd3162ead765e0ba"
}否则,需要检查插件安装时容器镜像服务实例的地址是否输入正确,并重新进行插件安装。
卸载
建议通过 CCSE 插件控制台卸载本插件。如需通过 Helm 卸载此应用,可以参考如下命令
$ helm uninstall RELEASE_NAME --namespace kube-system
卸载P2P加速插件后,插件相关服务会被自动删除。此外,还需要通过控制台或手动删除插件遗留的以下持久卷声明和持久卷:
#### 5个持久卷声明 data-cube-p2p-acceleration-mysql-0 redis-data-cube-p2p-acceleration-redis-master-0 redis-data-cube-p2p-acceleration-redis-replicas-0 redis-data-cube-p2p-acceleration-redis-replicas-1 redis-data-cube-p2p-acceleration-redis-replicas-2 #### 5个持久卷 p2p-local-pv-0 p2p-local-pv-1 p2p-local-pv-2 p2p-local-pv-3 p2p-local-pv-4
若不删除,则会影响插件的再次安装。