VMware恢复快照后Kubernetes网络消失问题排查记录(真实踩坑)

📅 发布时间:2026/7/11 14:03:35 👁️ 浏览次数:
VMware恢复快照后Kubernetes网络消失问题排查记录(真实踩坑)
今天做K8s实验的时候踩了一个比较典型的坑记录一下整个排查过程希望能帮到遇到类似问题的人。一、问题背景我是在VMware虚拟机里做Kubernetes三节点实验环境大概是1个 Master2个 Worker网络插件Calico平时为了方便实验我会经常在VMware Workstation里打快照。结果今天恢复快照之后我想着顺便把虚拟机内存调大一点然后重启系统问题就来了。二、问题现象系统启动之后我先执行ip a结果发现不对劲。之前正常的时候能看到很多网络接口ens160 tunl0 cali*******但是恢复快照后只剩下lo ens160最关键的是ens160 连 IP 地址都没有。这就很离谱因为没有 IP 的话 Kubernetes 网络肯定也起不来。三、第一步排查网卡是否存在先确认系统有没有识别网卡ip link show结果显示ens160 state UP说明网卡是存在的而且已经启动。问题就变成了网卡有但是没有IP。四、发现根本原因网卡配置文件没了继续排查网络配置文件cat /etc/sysconfig/network-scripts/ifcfg-ens160结果系统直接报错No such file or directory再看目录ls /etc/sysconfig/network-scripts/发现只有一个 README 文件。这就很明显了恢复快照 修改硬件配置之后系统的网卡配置文件丢了。所以系统识别到了网卡但是没有配置NetworkManager 也不会给它分配 IP五、手动重建网卡配置直接新建配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens160写入TYPEEthernet BOOTPROTOdhcp NAMEens160 DEVICEens160 ONBOOTyes然后重启网络systemctl restart NetworkManager再执行ip a终于拿到 IP 了192.168.30.xxx网络恢复。六、Kubernetes还是不正常虽然网络恢复了但K8s还是有问题。执行kubectl get pods -A直接报错The connection to the server 192.168.30.11:6443 was refused这里的6443端口是 Kubernetes API Server。说明控制平面没起来。七、排查K8s组件先看 kubeletsystemctl status kubelet是 running。再看容器运行时systemctl status containerd也是 running。于是尝试重启核心组件systemctl restart containerd systemctl restart kubelet过了几十秒再看kubectl get nodes结果变成k8s-node1 Ready k8s-node2 NotReady k8s-node3 NotReady说明Master节点已经恢复了。八、Calico网络也恢复再看网络ip a熟悉的接口又回来了tunl0 cali*******这些是Calico创建的虚拟网络接口。说明 CNI 网络插件已经正常运行。九、最后处理Worker节点Worker节点显示NotReady只需要在每个节点执行systemctl restart containerd systemctl restart kubelet等几十秒再看kubectl get nodes全部恢复k8s-node1 Ready k8s-node2 Ready k8s-node3 Ready至此整个集群恢复。十、总结这次问题其实是几个问题叠加VMware恢复快照修改虚拟机硬件内存Linux网卡配置文件丢失没有IP导致Kubernetes API Server无法启动最终解决步骤重新创建网卡配置文件重启 NetworkManager重启 containerd重启 kubelet集群就恢复了。十一、一个建议做 Kubernetes 实验的时候一定要用静态IP。不然DHCP变更虚拟机快照网络重置都可能让集群直接崩。这次算是完整踩了一遍坑也算涨经验了