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

Kubernetes中NetworkPolicy未对DaemonSet所属Pod生效问题咨询

Network Policy 对DaemonSet创建Pod的生效规则说明

首先明确:Network Policy的匹配逻辑只和Pod的标签、所在命名空间有关,和Pod由哪种上层工作负载(DaemonSet/Deployment/StatefulSet等)创建完全无关,你配置的默认全拒策略没有生效,通常是以下几个原因导致的:

  • CNI插件不支持NetworkPolicy
    不是所有K8s CNI插件都实现了NetworkPolicy能力,比如常用的Flannel默认就不支持网络策略,你需要使用Calico、Cilium、Weave Net这类原生支持NetworkPolicy的CNI插件,策略才会真正生效。
  • 网络策略和DaemonSet Pod不在同一个命名空间
    NetworkPolicy是命名空间级别的资源,你贴的配置中podSelector: {}只会匹配当前策略所在命名空间的所有Pod。如果你的DaemonSet部署在kube-system或其他自定义命名空间,而该策略只部署在了default命名空间,自然不会对DaemonSet的Pod生效。如果需要实现全集群默认拒流,需要在每一个命名空间下都部署该策略。
    你贴的策略本身配置是正确的:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default-deny
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      - Egress
    
  • 存在其他放行策略覆盖了拒流规则
    多个NetworkPolicy之间是取并集生效的,只要有任意一条策略匹配到目标Pod且放行对应方向的流量,默认拒流的规则就会被覆盖。你可以检查对应命名空间下是否有其他针对DaemonSet Pod标签放行的网络策略。
  • Pod配置了跳过网络策略的特殊注解
    部分CNI插件支持给Pod添加特殊注解(比如networking.k8s.io/network-policy: ignore)来跳过网络策略的管控,你可以检查DaemonSet的Pod模板是否配置了这类注解。

验证排查步骤

  1. 执行kubectl get networkpolicies -n <DaemonSet所在命名空间>,确认该默认拒流策略确实部署在了DaemonSet Pod所属的命名空间
  2. 执行kubectl describe networkpolicy default-deny -n <对应命名空间>,查看策略的事件字段是否有配置错误或加载失败的报错
  3. 进入DaemonSet Pod执行ping、curl等流量测试,同时查看CNI插件的运行日志,确认流量是否命中了对应的拒流规则。

内容的提问来源于stack exchange,提问作者Parvathy Mohan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:45:02