kubeadm 無法下載鏡像問題

kubeadm 是kubernetes 的集羣安裝工具,能夠快速安裝kubernetes 集羣。

kubeadm init 命令默認使用的docker鏡像倉庫爲k8s.gcr.io,國內無法直接訪問,於是需要變通一下。


首先查看需要使用哪些鏡像

kubeadm config images list
#輸出如下結果
k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

我們通過 docker.io/mirrorgooglecontainers 中轉一下


批量下載及轉換標籤

腳本如下

kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x
docker images |grep mirrorgooglecontainers |awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#docker.io/mirrorgooglecontainers#k8s.gcr.io#2' |sh -x
docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x
docker pull coredns/coredns:1.2.2
docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker rmi coredns/coredns:1.2.2

注:coredns沒包含在docker.io/mirrorgooglecontainers中,需要手工從coredns官方鏡像轉換下。


查看鏡像列表

docker images
#輸出如下結果
k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

現在已經滿足要求了,可以愉快的繼續kubeadm init


另外一種方法是使用kubeadm配置文件,通過在配置文件中指定docker倉庫地址,便於內網快速部署。目前處於試驗階段。


生成配置文件

kubeadm config print-defaults --api-objects ClusterConfiguration >kubeadm.conf

將配置文件中的

imageRepository: k8s.gcr.io

改爲你自己的私有docker倉庫,比如

imageRepository: docker.io/mirrorgooglecontainers


kubeadm生成的配置文件目前不夠完善,需要修改kubernetes版本

kubernetesVersion: v1.12.0

改爲

kubernetesVersion: v1.12.2


然後運行命令

kubeadm config images list --config kubeadm.conf
kubeadm config images pull --config kubeadm.conf
kubeadm init --config kubeadm.conf


更多kubeadm配置文件參數詳見

kubeadm config print-defaults



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章