阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

如何将现有容器映像顺利迁移到阿利云映像服务ACR?最近,ariyun提出了一个非常好的计划。他们开源了镜像同步工具,可以使数百个镜像实现平稳的批量迁移,最大镜像仓库的总量可以达到3T以上。这个工具,也被称为容器镜像迁移/同步工具,雷锋的人工智能开发人员编辑了它的关键内容和开源地址如下。

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

什么是 image-syncer?

顾名思义,图像同步器本质上是一个图像同步器。它是一个码头镜像同步工具,可以同步多对多镜像仓库,支持目前大多数主流码头镜像仓库服务,如ACR、码头、码头、自建港口等。

正常情况下,在k8s集群迁移场景中,镜像仓库之间的镜像迁移/同步是基本要求,而使用docker拉/推结合脚本的传统镜像同步方式有以下几个局限性:

依赖磁盘存储,本地镜像需要及时清理,磁盘丢弃会导致额外的时间开销。根据docker程序,很难胜任生产场景中大量镜像的迁移。docker守护进程严格限制了拉/推的并发性,并且不能执行高并发同步

有些功能只能通过HTTP api来操作,这不能通过单独使用docker cli来完成。使脚本变得复杂

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

图1阿里云迁移框架

和映像同步器最初是作为一个简单易用的批处理镜像迁移/同步工具开发的。因此,它的特性如下:

支持基于码头注册中心V2的码头镜像仓库服务(如码头枢纽、码头、阿利云镜像服务ACR、港口等)。)

支持基于码头注册中心V2的码头镜像仓库服务(如码头枢纽、码头、阿利云镜像服务ACR、港口等)。)

同步只通过内存和网络,不依赖磁盘存储。“增量同步”的同步速度很快。通过删除同步镜像blob信息,同步镜像

并发同步不会重复,并发数可以通过配置文件

进行调整,以自动重试失败的同步任务。可以解决大多数镜像同步中的网络抖动问题

不依赖于docker和其他程序

只需要确保镜像同步器的运行环境与注册中心网络相连接即可进行同步,用户可以从镜像仓库快速完成迁移、复制和增量同步。此外,该工具对硬件资源的要求很低(因为映像同步程序严格控制网络连接数=并发数,只有当单个镜像层太大时,并发数可能会填满内存,内存占用量=并发数x最大镜像层大小)。

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

Run image-syncer,只需要提供一个配置文件,内容如下:

如何使用 image-syncer?

{‘auth’:{//身份验证字段,其中每个对象都是注册表的帐号和//密码;通常,同步源需要有对标签的拉取和访问。//同步目标需要有推送和创建仓库的权限。如果未提供,默认匿名访问url“quay . io”: {//注册表需要与下图中相应注册表的URL相同。’用户名’ :’xxx ‘,//XXX ‘,’用户名,可选’密码’ :’ xxxxxxxx ‘,’//密码,可选’安全性’ : true//注册表是http服务,如果是,安全性字段需要为true,默认值为false,可选,图像同步版本v1.0.1}需要支持此选项’registry . cn-Beijing . aliyuns . com ‘ : { ‘ username ‘ : ‘ XXX ‘,’ password’:’xxxxxxxxx’},’ registry . hub . docker . com ‘ : { ‘ username ‘ : ‘ XXX ‘,Password’ :’ xxxxxxxx’}},’ images ‘ : {//同步镜像规则字段,其中规则包括源仓库(密钥)和目标仓库(值)//最大同步单位为不支持通过一个规则同步整个命名空间和注册表。//源仓库和目标仓库的格式类似于文档拉/推命令(注册表/命名空间/存储库:标记)使用的镜像url源仓库和目标仓库(如果目标仓库不是空字符串)至少包含注册表/命名空间/存储库//源仓库字段不能为空。

如果需要将源仓库与多个目标仓库同步,则需要配置多个规则//目标仓库名称可以不同于源仓库名称(标签也可以不同)。此时,同步功能类似于:码头拉码头标签码头推码头。IO/COREOS/Kube-RBAC-代理码头’ : ‘。IO/Ruohe/Kube-RBAC-代理’,’ XXXX ‘ : ‘ XXXX ‘,’某某/某某/某某: TAG1。标记2,标记3’:’xxx/xxx/xx’//当源仓库字段不包含标记时,这意味着仓库的所有标记都与目标仓库同步。

此时,目标仓库不能包含标签//当源仓库字段包含标签时,这意味着源仓库中只有一个标签与目标仓库同步。如果目标仓库不包含标签,则源仓库字段中的默认源标签//标签可以同时包含多个标签(例如,“a/b/c:1,2,3”),标签之间用“,”分隔。

在这种情况下,目标仓库不能包含标签,默认情况下使用原始标签//。当目标仓库为空字符串时,源映像将与默认注册表的默认命名空间同步。回购和标签与源仓库相同。默认注册表和默认命名空间可以通过命令行参数和环境变量进行配置,请参考以下描述} }

用户可以配置不同的镜像同步规则组合来匹配不同的迁移/同步要求,例如将单个镜像回购同步到多个不同的镜像回购,将多个源镜像同步到单个镜像回购(通过标记区分),在同一注册表中以不同的名称复制镜像回购等。

应该注意的是,如果对作为同步源的注册表地址进行匿名访问,可能会出现权限问题,例如无法获取图像和标签。在这种情况下,需要将具有相应权限的帐户密码添加到“auth”中。但是,如果对作为同步目标的注册表地址进行匿名访问,可能存在无法推送镜像的权限问题,并且用户还可能需要提供具有相应权限的帐户密码。

从自建港口同步镜像到ACR通常需要5个步骤,包括:

创建ACR实例

创建命名空间

创建访问凭据

进行权限管理。完成配置

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

图2最低权限设置示例

下载映像同步程序可执行文件(目前仅支持linux amd64版本,可自行编译)并解压缩。然后运行工具

源代码和二进制文件的最新版本:

https://git hub . com/aliyun container/image-syncer/releases/tag/v 1 . 0 . 3

一次同步经历三个阶段:生成同步任务、执行同步任务和重试失败的任务;其中,每个同步任务代表一个需要同步的标签(镜像)。如果配置文件中的规则未指定标签,源仓库中的所有标签将自动列在“生成同步任务”阶段,并生成相应的同步任务。如果同步任务的生成失败,将在重试阶段重试。(当帐户密码故意不匹配时)执行输出如下:

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

正常操作的输出当帐户密码在图3中不匹配时:

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

图4中正常操作的输出

image-syncer将在运行时打印出以下日志信息:

阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器

图5中的输出结果日志

同步结束后,映像同步程序还将计算成功和失败的同步任务数(每个同步任务代表一个镜像),并在标准输出和日志中打印“完成、失败的任务同步任务失败、生成的任务失败”等字样,以便获得同步结果。

 

极牛网精选文章《阿里云开源 image-syncer 工具,容器镜像大批量迁移同步利器》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/1988.html

(36)
打赏 微信公众号 微信公众号 微信小程序 微信小程序
主编的头像主编认证作者
上一篇 2019年11月22日 上午10:11
下一篇 2019年11月22日 上午10:54

相关推荐

发表回复

登录后才能评论
扫码关注
扫码关注
分享本页
返回顶部