K8s常见故障排查及解决方案

文章主要介绍了k8s集群在频繁重启节点后可能出现的两个问题:1)pod信息查看报错,缺少/run/flannel/subnet.env文件;2)服务无法暴露和调用。针对这些问题,提出了删除并重新部署flannel网络插件的解决方案,包括在master节点删除flannel,清理node节点的flannel相关文件,以及重启kubelet和应用。
摘要由CSDN通过智能技术生成

一. k8s集群频繁重启节点之后,可能会出现一下问题

1. 查看pod的信息时发现报错:open /run/flannel/subnet.env: no such file or directory

查看各个节点,包括master 节点是否有/run/flannel/subnet.env,内容应该是类似如下:

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

若有节点没有该文件那就拷贝一份,再次进行部署,应该就不会报这个错了。

2. 部署服务,发现服务无法暴露,服务间调用不通

先执行ifconfig,查看下节点的网络情况。
在这里插入图片描述
会发现有两个网关,如果网络有问题,可以先看看两个的网络段是不是一致。

在部署K8s的时候,我使用的是flannel网络插件,也可以使用calico插件,但是都会出现频繁重启或者运行时间长了之后出现部署服务之后,无法发现服务的问题,可以采用以下方式试着解决。

建议:在生产场景中,建议提前规划好k8s的网络,如果中途更换网络插件,产生的影响会比较大。

重新部署网络插件,建议不要更换,还是用之前的插件,只需要重新部署下就行。

第一步,在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,然后需要把之前部署的应用都重新启动一下,会发现服务已经可以发现了。也是一个小技巧,反正我的问题,得到了解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值