简介
本文为安装 k8s 集群作铺垫,由于国内网络环境,拉取国外镜像真心不容易。使用各种加速源可以快速镜像摘取速度,但是遇到像 k8s gcr.io 这样的私有镜像,国内根本拉不动,只能动用打 tag 的方式来解决了。
首发地址:https://t.v2as.com/p/fetch-google-image-use-tag
先讲讲镜像加速
多年后的 docker 镜像加速已经比较成熟,很多服务商都提供了自己的加速服务。 docker 中国(docker-cn.com), 阿里云等都有加速镜像
linux 上直接修改 /etc/docker/daemon.json 文件
$ vim /etc/docker/daemon.json
添加以下配置文件并重启你的 docker
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
注意 : https://registry.docker-cn.com
为 docker-cn
的加速镜像,你可以换成阿里云的或其它的。
Mac & Windows 客户端
点击 docker 图标 => 点击 preferences => daemon => 在 registry mirrors 中添加你的加速镜像源
阿里云是每个人不同的镜像地址,点这个地址获取自己的专属地址
以上操作后可以加快你摘取 docker.io
镜像的速度,对于 gcr.io
这种 google
的镜像并起不到加速的效果
所以你可以先把国外的镜像同步到 docker.io
。
- 有一台国外的服务器 : 在你的服务器中拉取国外的镜像,之后 push 到
docker.io
- 利用
github.com
的travis
: 你可以建一个仓库,在里面添加.travis.yml
之后把操作命令写在里面
travis-ci 官方文档
因为我有国外的服务器,所以使用第一种方法
拉取需要的镜像
docker pull k8s.gcr.io/kube-apiserver:v1.13.0
docker pull k8s.gcr.io/kube-controller-manager:v1.13.0
docker pull k8s.gcr.io/kube-scheduler:v1.13.0
docker pull k8s.gcr.io/kube-proxy:v1.13.0
docker pull k8s.gcr.io/pause:3.1
docker pull k8s.gcr.io/etcd:3.2.24
docker pull k8s.gcr.io/coredns:1.2.6
docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
将拉下来的镜像重新打上 tag
便于上传到自己名下的 docker.io
, 注意 这里的 gladmo
是我的用户名,需要改成你的,不传你是 push
不成功的
docker tag k8s.gcr.io/kube-apiserver:v1.13.0 gladmo/kube-apiserver:v1.13.0
docker tag k8s.gcr.io/kube-controller-manager:v1.13.0 gladmo/kube-controller-manager:v1.13.0
docker tag k8s.gcr.io/kube-scheduler:v1.13.0 gladmo/kube-scheduler:v1.13.0
docker tag k8s.gcr.io/kube-proxy:v1.13.0 gladmo/kube-proxy:v1.13.0
docker tag k8s.gcr.io/pause:3.1 gladmo/pause:3.1
docker tag k8s.gcr.io/etcd:3.2.24 gladmo/etcd:3.2.24
docker tag k8s.gcr.io/coredns:1.2.6 gladmo/coredns:1.2.6
docker tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 gladmo/kubernetes-dashboard-amd64:v1.10.0
push
打好的镜像到 docker.io
docker push gladmo/kube-apiserver:v1.13.0
docker push gladmo/kube-controller-manager:v1.13.0
docker push gladmo/kube-scheduler:v1.13.0
docker push gladmo/kube-proxy:v1.13.0
docker push gladmo/pause:3.1
docker push gladmo/etcd:3.2.24
docker push gladmo/coredns:1.2.6
docker push gladmo/kubernetes-dashboard-amd64:v1.10.0
当你要使用时,你只要做上面的逆操作就可以了
docker pull gladmo/kube-apiserver:v1.13.0
docker pull gladmo/kube-controller-manager:v1.13.0
docker pull gladmo/kube-scheduler:v1.13.0
docker pull gladmo/kube-proxy:v1.13.0
docker pull gladmo/pause:3.1
docker pull gladmo/etcd:3.2.24
docker pull gladmo/coredns:1.2.6
docker pull gladmo/kubernetes-dashboard-amd64:v1.10.0
docker tag gladmo/kube-apiserver:v1.13.0 k8s.gcr.io/kube-apiserver:v1.13.0
docker tag gladmo/kube-controller-manager:v1.13.0 k8s.gcr.io/kube-controller-manager:v1.13.0
docker tag gladmo/kube-scheduler:v1.13.0 k8s.gcr.io/kube-scheduler:v1.13.0
docker tag gladmo/kube-proxy:v1.13.0 k8s.gcr.io/kube-proxy:v1.13.0
docker tag gladmo/pause:3.1 k8s.gcr.io/pause:3.1
docker tag gladmo/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag gladmo/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
docker tag gladmo/kubernetes-dashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
这样你就可以把一些拉不了的镜像拉取下来了,由于都是命令,所以还是可以做成脚本再自动一点的
最后做一点清理工作
docker rmi gladmo/kube-apiserver:v1.13.0
docker rmi gladmo/kube-controller-manager:v1.13.0
docker rmi gladmo/kube-scheduler:v1.13.0
docker rmi gladmo/kube-proxy:v1.13.0
docker rmi gladmo/pause:3.1
docker rmi gladmo/etcd:3.2.24
docker rmi gladmo/coredns:1.2.6
docker rmi k8s.gcr.io/kube-apiserver:v1.13.0
docker rmi k8s.gcr.io/kube-controller-manager:v1.13.0
docker rmi k8s.gcr.io/kube-scheduler:v1.13.0
docker rmi k8s.gcr.io/kube-proxy:v1.13.0
docker rmi k8s.gcr.io/pause:3.1
docker rmi k8s.gcr.io/etcd:3.2.24
docker rmi k8s.gcr.io/coredns:1.2.6
小结
由于网络环境真是费尽心思啊,什么时候写代码可以不因为网络问题拖慢速度就好了。