痛点
- k8s.gcr.io仓库中的镜像难以下载, 国内使用- kubernetes困难重重。
- 国内网友实现的同步方案比较复杂,不容易新增和删除镜像。
目的
实现一个自动同步所需镜像从到 k8s.gcr.io 国内( aliyun )的镜像仓库,且新增和配置镜像操作需简单化。
技术架构
- 
    python脚本:对比源和目的仓库镜像同步信息,生成需要同步的镜像配置。
- 
    skopeo:使用生成的同步配置,进行同步操作。
- 
    Github Action:每天自动运行脚本同步镜像到阿里云。
功能
- 支持动态同步镜像列表(默认获取最新的 5 个 tag 用于同步)。
- 支持静态同步镜像列表(使用指定的 tag 用于同步)。
- 方便调整同步位置。
使用
动态镜像同步配置
采用 yaml 结构配置,方便清晰。fork 仓库后修改配置文件提交 pr 即可。
last: 5
images:
  k8s.gcr.io:
    - etcd
    - coredns
    - kube-proxy
    - kube-apiserver
    - kube-scheduler
    - kube-controller-manager
    - metrics-server/metrics-server
    - ingress-nginx/controller
    - dns/k8s-dns-node-cache
静态镜像同步配置
k8s.gcr.io:
  images:
    defaultbackend-amd64: 
     - '1.5'
    pause:
     - '3.5'
     - '3.4.1'
     - '3.3'
同步规则
k8s.gcr.io/{image_name}  ==>  registry.cn-hangzhou.aliyuncs.com/kainstall/{image_name}
拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/kainstall/kube-scheduler:[镜像版本号]
具体实现
请看 Github 仓库 sync_image