k8s 國內鏡像下載方案
眾所周知,國內是不太容易下載k8s.gcr.io
站點的鏡像的
一、第一種方案:Azure中國鏡像站
http://mirror.azure.cn/help/gcr-proxy-cache.html
Global | Proxy in China (Azure中國鏡像) |
---|---|
dockerhub (docker.io) | dockerhub.azk8s.cn |
gcr.io | gcr.azk8s.cn |
k8s.gcr.io | gcr.azk8s.cn/google-containers |
quay.io | quay.azk8s.cn |
#這兩條語句是等效的
docker pull k8s.gcr.io/kube-apiserver:v1.15.2
docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.15.2
#這兩條也是等效的
docker pull quay.io/xxx/yyy:zzz
docker pull quay.azk8s.cn/xxx/yyy:zzz
二、第二種方案:直接 pull 用戶mirrorgooglecontainers同步過的鏡像
就當前來說,用戶 mirrorgooglecontainers 在 docker hub 同步了所有 k8s 最新的鏡像,先從這兒下載,然后修改 tag 即可
https://hub.docker.com/u/mirrorgooglecontainers
#這兩條也是等效的
docker pull mirrorgooglecontainers/kube-scheduler:v1.15.2
docker pull k8s.gcr.io/kube-scheduler:v1.15.2
三、通過腳本進行批量下載
要下載鏡像的名稱,可以通過 kubeadm config images list
命令獲取
[root@node-1 yum.repos.d]# kubeadm config images list --kubernetes-version=v1.15.2
k8s.gcr.io/kube-apiserver:v1.15.2
k8s.gcr.io/kube-controller-manager:v1.15.2
k8s.gcr.io/kube-scheduler:v1.15.2
k8s.gcr.io/kube-proxy:v1.15.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
腳本一:通過Azure中國鏡像站進行下載
#!/bin/bash
# download k8s 1.15.2 images
# get image-list by 'kubeadm config images list --kubernetes-version=v1.15.2'
# gcr.azk8s.cn/google-containers == k8s.gcr.io
images=(
kube-apiserver:v1.15.2
kube-controller-manager:v1.15.2
kube-scheduler:v1.15.2
kube-proxy:v1.15.2
pause:3.1
etcd:3.3.10
coredns:1.3.1
)
for imageName in ${images[@]};do
docker pull gcr.azk8s.cn/google-containers/$imageName
docker tag gcr.azk8s.cn/google-containers/$imageName k8s.gcr.io/$imageName
docker rmi gcr.azk8s.cn/google-containers/$imageName
done
腳本二:通過 Azure 中國鏡像站進行下載,執行腳本時需要指定版本
#!/bin/bash
# download k8s 1.15.2 images
# get image-list by 'kubeadm config images list --kubernetes-version=v1.15.2'
# gcr.azk8s.cn/google-containers == k8s.gcr.io
#images=(
#kube-apiserver:v1.15.2
#kube-controller-manager:v1.15.2
#kube-scheduler:v1.15.2
#kube-proxy:v1.15.2
#pause:3.1
#etcd:3.3.10
#coredns:1.3.1
#)
if [ $# -ne 1 ];then
echo "please user in: ./`basename $0` KUBERNETES-VERSION"
exit 1
fi
version=$1
images=`kubeadm config images list --kubernetes-version=${version} |awk -F'/' '{print $2}'`
for imageName in ${images[@]};do
docker pull gcr.azk8s.cn/google-containers/$imageName
docker tag gcr.azk8s.cn/google-containers/$imageName k8s.gcr.io/$imageName
docker rmi gcr.azk8s.cn/google-containers/$imageName
done
腳本三:通過用戶mirrorgooglecontainers 在 docker hub的鏡像進行下載
#!/bin/bash
# download k8s 1.15.2 images
# get image-list by 'kubeadm config images list --kubernetes-version=v1.15.2'
images=(
kube-apiserver:v1.15.2
kube-controller-manager:v1.15.2
kube-scheduler:v1.15.2
kube-proxy:v1.15.2
pause:3.1
etcd:3.3.10
)
for imageName in ${images[@]};do
docker pull mirrorgooglecontainers/$imageName
docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName
docker rmi mirrorgooglecontainers/$imageName
done
docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker rmi coredns/coredns:1.3.1