kubeadm部署k8s 排错 (初学)
环境 :1 台master 2台node
在用kubeadm 安装k8s时,如果flannel镜像拉不下来,就类似于下面的情况,因为网络都不通
master和node都是 NotReady
[root@k8s-master .kube]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady master 23h v1.15.0
k8s-node1 NotReady 23h v1.15.0
k8s-node2 NotReady 23h v1.15.0
我在安装pod网络插件flannel是执行下面的代码
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db1 1b/Documentation/kube-flannel.yml
其实 kube-flannel.yml这个文件里有定义flannel镜像的名字,你可以先wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
将kube-flannel.yml下载下来,然后vi 打开,可以看到定义flannel所需要的镜像名字 ,
如图需要的是 quay.io/coreos/flannel:v0.11.0-amd64
可是执行了kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml,去看pod 发现其中一个或者多个flannel 异常,如下图
[root@k8s-master .kube]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-554b9c67f9-6k8zx 1/1 Running 0 23h
kube-system coredns-bccdc95cf-2f894 1/1 Running 3 23h
kube-system coredns-bccdc95cf-txm77 1/1 Running 3 23h
kube-system etcd-k8s-master 1/1 Running 1 23h
kube-system kube-apiserver-k8s-master 1/1 Running 1 23h
kube-system kube-controller-manager-k8s-master 1/1 Running 2 23h
kube-system kube-flannel-ds-amd64-dgndz 1/1 Running 0 23h
kube-system kube-flannel-ds-amd64-nbn4b 1/1 Running 0 23h
kube-system kube-flannel-ds-amd64-rds4j 0/1 Init:ImagePullBackOff 0 23h
kube-system kube-proxy-bwbwm 1/1 Running 1 23h
kube-system kube-proxy-c7dr7 1/1 Running 1 23h
kube-system kube-proxy-q8m56 1/1 Running 1 23h
kube-system kube-scheduler-k8s-master 1/1 Running 2 23h
可是等了好久,还是如上图flannel状态还是 Init:ImagePullBackOff 无非就是镜像没有拉取下来
给所有docker 使用阿里云的镜像加速器
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"]
}
EOF
然后 systemctl restart docker 重启docker,如果还拉不下来镜像,可以更换一个flannel镜像
docker pull lizhenliang/flannel:v0.11.0-amd64
上面说了需要的是 quay.io/coreos/flannel:v0.11.0-amd64
可以修改 lizhenliang/flannel:v0.11.0-amd64 为所需要的quay.io/coreos/flannel:v0.11.0-amd64
docker tag docker tag lizhenliang/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
其实也可以改kube-flannel.yml 这个文件里 改成现在下载的 lizhenliang/flannel:v0.11.0-amd64
然后执行 kubectl apply -f kube-flannel.yml
两种方法都可以,但是我们其他node已经是quay.io/coreos/flannel:v0.11.0-amd64,所以我们还是改镜像名字
kubectl get pods –all-namespaces这条命令并不是特备详细
kubectl get pods -n kube-system -o wide 这条命令可以清楚看出来是哪个节点/IP上pod或者镜像有问题
如果是其他的镜像状态不对 看看是不是镜像没有拉取下来,可以给docker增加 加速器,只要镜像能正常获取下载,一般没有问题。