zoukankan      html  css  js  c++  java
  • 阿里云镜像仓库镜像迁移至私有Harbor

    下载镜像同步工具

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

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

    <harbor地址>:
      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:]]' '
    ' |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=<harbor仓库地址> --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,都可以通过设置重试次数来减少失败的任务数量
    
  • 相关阅读:
    基础操作
    需要注意
    简单操作
    git指令-版本回退
    设计模式-代理模式
    在idea下遇到的问题汇总
    maven笔记--持续更新
    poi简介
    Win10添加右键在此处打开命令行
    Ajax&Json案例
  • 原文地址:https://www.cnblogs.com/Aaron-23/p/14330513.html
Copyright © 2011-2022 走看看