解決kubeadm部署kubernetes集群鏡像問題


kubeadm 是kubernetes 的集群安裝工具,能夠快速安裝kubernetes 集群。kubeadm init 命令默認使用的docker鏡像倉庫為k8s.gcr.io,國內無法直接訪問,需要中轉一下才可以使用。

首先查看kubenets需要哪些鏡像

kubeadm config images list
[root@master yum.repos.d]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

通過 docker.io/mirrorgooglecontainers中轉一下https://hub.docker.com/u/mirrorgooglecontainers

批量下載及轉換標簽

  #下載需要的鏡像
kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#mirrorgooglecontainers#g' |sh -x
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#mirrorgooglecontainers#k8s.gcr.io#2' |sh -x 
#刪除mirrorgooglecontainers鏡像
docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x 

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

docker pull coredns/coredns:1.3.1

 

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.1.3

查看鏡像列表

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

生成配置文件

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

將配置文件中的

imageRepository: k8s.gcr.io

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

imageRepository: docker.io/mirrorgooglecontainers

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

kubernetesVersion: v1.13.1

改為

kubernetesVersion: v1.14.0
kubeadm config images list --config kubeadm.conf
kubeadm config images pull --config kubeadm.conf
kubeadm init --config kubeadm.conf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM