我在使用 Mailu Helm 图表进行 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-0e851981d24bd2d807e1a --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
我尝试重新启动节点,但问题仍然存在。