kubernetes镜像(gcr.io)无法访问的问题
经常会遇到
gcr.io/google_containers
被墙的问题,可以使用:https://hub.docker.com/u/googlecontainer
使用方法
将gcr.io/google_containers/$repo
替换为googlecontainer/$repo
,例如需要使用gcr.io/google_containers/kubernetes-dashboard-amd64
镜像,则使用googlecontainer/kubernetes-dashboard-amd64
即可。
docker pull googlecontainer/kubernetes-dashboard-amd64 # for docker
kubeadm init –image-repository googlecontainer # for kubernetes
原理
travis-ci安装gcloud并授权,然后利用travis-ci的网络来拉取google_containers镜像,并将镜像push到docker仓库。每天定时出发travis来拉取google_containers的更新。
- 使用
gcloud
命令列列举gcr.io/google_containers
下的所有镜像repo - 遍历第1步的repo,获取该repo的所有
tag
,然后对比gcr-complete-tasks,如果该tag已经被同步,则跳过 - 拉取
gcr.io/google_containers/$repo:$tag
的镜像:image
。如果$image
已经在gcr-complete-images内存在,则跳过。 - 修改
$image
的repo和tag,打docker tag为googlecontainer/$repo:$tag
,并push到googlecontainer$repo:$tag
- 重复2-4步,直到所有
$repo
都已经同步
优点
- 不需要自己vps
- 不需要搭梯子
- 理论镜像的延迟时间是24H,比较实时
- 全自动检测新镜像,不需要人为参与
缺点
比较依赖git来存储进度,造成git的commit log非常大(已经解决,通过使用travis-ci的cache解决)- 有被travis封禁的风险(每次限制存储量和任务量)
新增owner(目前owner=google_containers)时无法检测(已经解决,使用owners文件来新增owner。如需增加,请留言或者提交Pull request。)