root@ubuntu:~# kubectl get pods -A -o jsonpath="{.items[*].spec.containers[*].image}" > | tr -s '[[:space:]]' ' ' | sort | uniq > image-list.txt root@ubuntu:~# cat image-list.txt k8s.gcr.io/coredns:1.6.7 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/kube-apiserver:v1.18.1 k8s.gcr.io/kube-controller-manager:v1.18.1 k8s.gcr.io/kube-proxy:v1.18.1 k8s.gcr.io/kube-scheduler:v1.18.1 nginx quay.io/coreos/flannel:v0.12.0-arm64
解决谷歌镜像问题
那么需要哪些镜像呢,执行kubeadm config images list
查看一下。对于k8s 1.12版本需要的是以下镜像及版本(注意,不同k8s版本需要的镜像版本不同):
1
|
k8s.gcr.io/kube-apiserver:v1.12.2
|
将以上内容存到一个文件中,在这里是~/k8s_need_images.dat
然后创建并编辑~/retag_images.sh
文件,输入以下内容:
1
|
images=(`cat k8s_need_images.dat`)
|
执行sh ~/retag_images.sh
,稍等一会。完成后使用docker images
查看下,所需要的k8s镜像都已存在
设置Pod网络方案
初始化Master的时候,还需要做的一件事情是要选择一种Pod网络方案。k8s提供了许多种网络方案,这里我们选择使用Flannel,那么在初始化的时候还需要加上参数--pod-network-cidr=10.244.0.0/16
执行初始化
执行kubeadm init --pod-network-cidr=10.244.0.0/16