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

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

首先查看kubenets須要哪些鏡像api

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工具

批量下載及轉換標籤google

 #下載須要的鏡像
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官方鏡像轉換下。spa

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

查看鏡像列表code

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

生成配置文件blog

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

將配置文件中的dns

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
相關文章
相關標籤/搜索