kubernetes镜像无法访问的问题
经常会遇到
gcr.io/google_containers被墙的问题,可以使用:hub.docker.com/u/googlecon…
使用方法
将gcr.io/google_containers/$repo替换为googlecontainer/$repo,例如需要使用gcr.io/google_containers/kubernetes-dashboard-amd64镜像,则使用googlecontainer/kubernetes-dashboard-amd64即可。
docker pull googlecontainer/kubernetes-dashboard-amd64
原理
利用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封禁的风险
- 新增owner(目前owner=google_containers)时无法检测