一起误删cni0虚拟网卡引发的k8s事故

本文讲述了在K8S集群中误删cni0虚拟网卡导致master节点pod网络通信中断的事故。通过紧急排水恢复业务后,详细探讨了手动恢复cni0的方法,包括理解flannel工作原理、重建cni0网桥、识别并挂载pod的veth pair。最后,提出了避免类似问题的运维规范建议。
摘要由CSDN通过智能技术生成

起因:

由于生产K8S集群需要踢出一个已存在的节点后重新加入,在清理node节点环境的过程中,误将需要在node节点上执行的删除cni0虚拟网卡的操作在master节点上执行了。由于资源问题,我们的master节点也部署了很多的业务pod。这个操作导致master节点上非hostnetwork的pod的网络通信全部中断。很多业务受到了影响,告警也很及时。

误操作命令:

ip link del cni0

紧急修复:

为了尽快恢复业务,我直接将master节点强制排水了。将节点上的pod驱逐到了其它节点上,使得业务尽快得以恢复。

kubectl drain master01 --ignore-daemonsets --delete-emptydir-data
// 注意排水后,观察pod重调度部署情况。确认所有pod正常启动恢复业务!

后续:

业务是恢复了,但是master节点上的pod网络还是不通的。我想到了两种恢复手段。第一,直接将节点踢出集群,然后重新加入。第二,尝试手工恢复cni0虚拟网卡,将pod网络接回来。第一种简单粗暴些,考虑到重新加入集群执行的脚本中,因为迭代过的原因,可能有些参数或者内核参数变更过。为了避免出现修改影响到master组件。我倾向于尝试第二种方式。

要将pod网络接回来,就要了解K8S flannel组件的通信原理和连接方式。需要理解pod虚拟veth pair对是如何工作的?这里主要涉及flannel的工作原理,网络名称空间的基本机制和操作。

首先,flannel(vxlan模式)的工作原理如下:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值