镜像迁移到registry_阿里云镜像仓库镜像迁移至私有Harbor

下载镜像同步工具

wget https://goodrain-delivery.oss-cn-hangzhou.aliyuncs.com/boe/image-syncer && chmod 777 image-syncer

编写配置文件auth.yaml,模板如下

:

username:

password:

:

username:

password:

获取当前集群所有使用的镜像

#获取命名空间,平台上运行的所有组件命名空间为随机字符串,

$ kubectl get ns

NAME STATUS AGE

584226fbdeeb4ecea2d20abe40285467 Active 146d

90e1c7ecea554a418a6d22a7806fe7ef Active 21d

arms-prom Active 277d

default Active 317d

kube-node-lease Active 317d

kube-public Active 317d

kube-system Active 317d

rainbond Active 317d

rbd-system Active 317d

#使用此命令分别指定不同的命名空间,将最终镜像输出至image.yaml文件中

kubectl get pods -n ed90b85692894499a73c2c15b15230b1 -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c |awk '{print $2}'|awk -F: '{print $1}' >> image.yaml

同步镜像

./image-syncer --proc=6 --auth=./auth.yaml --images=./images.yaml --namespace=boe --registry= --retries=3 --log=./log

参数说明

-h --help 使用说明,会打印出一些启动参数的当前默认值

--config 设置用户提供的配置文件所在路径,使用之前需要创建配置文件,默认为当前工作目录下的image-syncer.json文件

--log 打印出来的log文件路径,默认打印到标准错误输出,如果将日志打印到文件将不会有命令行输出,此时需要通过cat对应的日志文件查看

--namespace 设置默认的目标namespace,当配置文件内一条images规则的目标仓库为空,并且默认registry也不为空时有效,可以通过环境变量DEFAULT_NAMESPACE设置,同时传入命令行参数会优先使用命令行参数值

--registry 设置默认的目标registry,当配置文件内一条images规则的目标仓库为空,并且默认namespace也不为空时有效,可以通过环境变量DEFAULT_REGISTRY设置,同时传入命令行参数会优先使用命令行参数值

--proc 并发数,进行镜像同步的并发goroutine数量,默认为5

--records 指定传输过程中保存已传输完成镜像信息(blob)的文件输出/读取路径,默认输出到当前工作目录,一个records记录了对应目标仓库的已迁移信息,可以用来进行连续的多次迁移(会节约大量时间,但不要把之前自己没执行过的records文件拿来用),如果有unknown blob之类的错误,可以删除该文件重新尝试

--retries 失败同步任务的重试次数,默认为2,重试会在所有任务都被执行一遍之后开始,并且也会重新尝试对应次数生成失败任务的生成。一些偶尔出现的网络错误比如io timeout、TLS handshake timeout,都可以通过设置重试次数来减少失败的任务数量

你可能感兴趣的:(镜像迁移到registry)