k8s安装网络插件flannel 时出现报错Init:ImagePullBackOff 无法安装成功
错误截图如下:
产生原因:
查看kube-flannel.yml
文件时发现quay.io/coreos/flannel:v0.12.0-amd64
quay.io
网站目前国内无法访问
第一种解决办法:
下载flannel:v0.12.0-amd64
导入到docker中
可以去https://github.com/coreos/flannel/releases
官方仓库下载镜像
第二种解决办法:
由于已经执行完命令【kubectl apply -f kube-flannel.yml】,执行完这个命令之后会自动生成一个文件,文件名为【kube-flannel.yml】,使用命令【cat kube-flannel.yml】可以打开这个文件
文件内部详情为截图:
下拉镜像:quay.io/coreos/flannel:v0.13.1-rc1
如果拉取较慢,可以改为:quay-mirror.qiniu.com/coreos/flannel:v0.13.1-rc1
下拉镜像:gcr.io/google_containers/kube-proxy
可以改为: registry.aliyuncs.com/google_containers/kube-proxy
如何替换呢?
使用命令:【vi kube-flannel.yml】把截图中红框圈起来的地址替换掉
第三种解决办法:
由于镜像地址是被屏蔽的,所以可以用加速器VPN,这样启动后就可以直接下载,也就不用修改yml文件了
既然已经下载了部分插件,那么就得执行下删除命令,删除后,再重新下载
卸载finnel插件命令
#第一步,在master节点删除flannel kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #第二步,在node节点清理flannel网络留下的文件 ifconfig cni0 down ip link delete cni0 ifconfig flannel.1 down ip link delete flannel.1 rm -rf /var/lib/cni/ rm -f /etc/cni/net.d/* 注:执行完上面的操作,重启kubelet
systemctl restart kubelet
删除命令执行完后,就是重新下载
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
第四种解决办法:(推荐!!!)
直接使用命令【vi kube-flannel.yml】更改镜像源
替换为国内源 【lizhenliang/flannel:v0.11.0-amd64】
替换完之后,执行删除命令
kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
然后再执行 【kubectl apply -f kube-flannel.yml】
最后用命令【kubectl get pods -n kube-system -o wide】 可以清楚看出来是哪个节点/IP上pod或者镜像有问题
总算给搞定了!
kube-flannel插件是个坑,深深体会到了,上述总结为亲身经历,希望以后能爬更多的坑,解决更多的问题,如上为具体解决步骤