Pod因Kubernetes中iptables 'Chain Already Chain' Error而陷入终止状态[已关闭]

rt4zxlrg  于 5个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(61)

**已关闭。**此问题为not about programming or software development。目前不接受回答。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
上个月关门了。
Improve this question
我在使用Mailu Helm chart进行Kubernetes部署时遇到了一个不寻常的问题,特别是mailu-front组件。更新部署后,新创建的pod工作正常,但旧pod卡在“终止”状态。Kubernetes事件日志显示以下与pod终止相关的错误:

error killing pod: failed to "KillPodSandbox" for "237aa644-7634-4fa2-a538-f973e7f7dfab" with KillPodSandboxError: "rpc error: code = Unknown desc = failed to destroy network for sandbox \"cbbcf6eaaf47c0ef5b92b97187276d04def7bcef3e68b92889b7993ba970ce55\": plugin type=\"portmap\" failed (delete): could not teardown ipv4 dnat: running [/usr/sbin/iptables -t nat -N CNI-DN-0e851981d24bd2d807e1a --wait]: exit status 1: iptables: Chain already exists.\n"

字符串
我正在运行一个小型kubeadm 1.28集群,所有节点都使用Weave CNI和Debian 11主机操作系统
尝试强制删除pod失败。此问题似乎与iptables配置有关,特别是一个冲突,其中链无法被拆除,因为它已经存在(冲突,因为事件日志中的命令旨在创建链,而不是删除它)。
我没有找到太多关于如何解决这个错误的信息。
如果我登录到受影响节点的主机操作系统并运行sudo iptables -t nat -N CNI-DN-0 e851981 d24 bd 2d 807 e1 a--wait,我确实可以看到输出中反映的问题:

iptables: Chain already exists.


如果我尝试用sudo iptables -t nat -X CNI-DN-0e851981d24bd2d807e1a --wait删除链,iptables会说链已经在用途:

iptables v1.8.7 (nf_tables):  CHAIN_USER_DEL failed (Device or resource busy): chain CNI-DN-0e851981d24bd2d807e1a


我尝试重新启动节点,但问题仍然存在。

iq0todco

iq0todco1#

看起来之前的终止清理没有完成。如果您尝试强制删除,可能会导致一些意外的结果,例如由于清理过程不完整而导致资源泄漏。
在Pod仍然停留在Terminating状态的情况下,尝试以下诊断步骤,进一步清理kubernetes节点上的相关资源。

  • SSH进入目标Kubernetes节点
  • 执行crictl ps以确认CONTAINER_ID
  • 执行crictl pods以确认POD_ID
  • 执行crictl stop CONTAINER_ID停止容器
  • 相关资源应该由kubelet自动删除,无需用户干预。
  • 等待几分钟,仔细检查容器和pod是否仍然存在。如果是,执行crictl rm <CONTAINER_ID>crictl rmp <POD_ID>相应地删除。

您可以参考官方documentation以获取更多信息。

更新:

根据link,您可以尝试iptables -F <CHAINNAMEHERE>,然后是iptables -X <CHAINNAMEHERE>
看起来-F删除了链中的所有规则,但没有删除链本身。所以有必要使用-X。

相关问题