You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes删除NetworkPolicy后Pod通信超时排查(Cilium)

问题排查与修复方案

该故障为使用Cilium作为CNI时的典型策略残留问题,原生kubectl get networkpolicy仅能查询Kubernetes内置的NetworkPolicy资源,无法覆盖Cilium自定义的策略类型,按以下步骤操作即可修复:

  • 排查Cilium自定义策略残留
    Cilium独立维护两类自定义策略CRD,这类资源不会随原生NetworkPolicy的删除自动清除:
    • 命名空间维度:CiliumNetworkPolicy
    • 集群全局维度:CiliumClusterwideNetworkPolicy
      执行以下命令扫描全集群的Cilium自定义策略:
    # 扫描所有命名空间下的CiliumNetworkPolicy
    kubectl get ciliumnetworkpolicy -A
    # 扫描集群全局范围的Cilium策略
    kubectl get ciliumclusterwidenetworkpolicy
    
    重点排查两类规则:一是测试期间创建的匹配staging命名空间Pod标签的拒绝规则,二是配置了默认拒绝(default-deny)逻辑的全局/命名空间级规则,这类规则即使在原生NetworkPolicy全部删除的场景下也会持续生效,找到后直接删除对应策略资源即可。
  • 修复Cilium Agent策略缓存不一致问题
    如果未扫描到任何Cilium自定义策略,属于删除策略后Cilium Agent本地缓存未同步的偶发异常,执行以下命令强制重启所有Cilium Agent刷新规则缓存:
    kubectl -n kube-system rollout restart daemonset/cilium
    
    等待所有Cilium Pod状态变为Running后,重新测试Pod间连通性。
  • 精准定位拦截规则
    上述操作无效时,使用Cilium内置的策略跟踪工具定位具体丢包原因:
    1. 先获取两个业务Pod的IP:
    kubectl -n staging get pod -o wide
    
    1. 进入任意Cilium Agent Pod执行策略跟踪命令,将命令中占位符替换为实际查到的Pod IP:
    kubectl -n kube-system exec -it ds/cilium -- cilium policy trace -s <service-a-pod-ip> -d <service-b-pod-ip> --dport 8080
    
    命令输出会明确标记拦截流量的策略ID,根据ID定位并删除对应残留规则即可。

注:当前环境下的Namespace、Deployment、Service配置均无问题,busybox的nc监听命令也符合测试要求,不需要调整业务侧资源配置,故障点完全在Cilium策略层。


内容的提问来源于stack exchange,提问作者Esben Eickhardt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:00:53