k8s镜像

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
2
3
4
5
6
7
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

将以上内容存到一个文件中,在这里是~/k8s_need_images.dat

然后创建并编辑~/retag_images.sh文件,输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
images=(`cat k8s_need_images.dat`)
echo ${images[@]}
for img in ${images[@]}
do
# 之后还有需要下载的镜像,直接在k8s_need_images.txt文件中添加即可
# 不需要下载的(比如之前添加过的)前加上#号即可
# 镜像名既支持k8s.gcr.io开头的,也支持gcr.io/google_containers开头的
if [[ "${img:0:1}"x != "#"x ]]; then
img_name=`echo $img | awk -F '/' '{print $NF}'`
download_img="anjia0532/google-containers.${img_name}"
echo deal with $img_name
docker pull $download_img
docker tag $download_img $img
docker rmi $download_img
fi
done

执行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

原文地址:https://www.cnblogs.com/dream397/p/13821304.html