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