问题分析

每次集群启动时查看节点状态都是NotReady,虽然可以通过这个方法处理解决k8s的coredns一直处于的crashloopbackoff问题,但是指标不治本,每次重启都会出现这个问题所以特地追究了一下原因

在这里插入图片描述

问题分析


查看k8s的日志

很明显可以看出是coredns容器出了问题,coredns无法启动

sudo journalctl -f -u kubelet

在这里插入图片描述

查看系统中的容器运行情况

确认是coredns容器出现问题,发现CoreDNS 状态是CrashLoopBackOff

kubectl get pod -A

在这里插入图片描述

查看详细信息

查看出错容器具体报错信息日志

kubectl describe -n kube-system pod/coredns-5c98db65d4-wcnd6

报错信息截图
在这里插入图片描述
主要报错为network: open /run/flannel/subnet.env: no such file or directory,subnet.env文件为子节点启动时需要的文件,报错信息可能是子节点上报错信息缺失导致

查看主、子节点文件情况

主节点存在该文件,子节点不存在在这里插入图片描述
在这里插入图片描述

解决问题


参考:我的 Windows Pod 无法启动,因为缺少 /run/flannel/subnet.env

知道问题什么原因解决就很简单了,将主节点的/run/flannel/subnet.env文件复制到子节点就可以了。由于子节点没有目录,所以需要在子节点创建目录

子节点创建文件目录

mkdir -p /run/flannel/

在这里插入图片描述

主节点上执行复制指令,将文件复制到子节点

scp -r /run/flannel/subnet.env root@k8s-node01:/run/flannel/
scp -r /run/flannel/subnet.env root@k8s-node02:/run/flannel/

在这里插入图片描述

最后重启项目,问题解决

余生还长,切勿惆怅

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐