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

配置默认拒绝入站的NetworkPolicy后,K8s API Server能否访问APIService扩展Pod?

K8s API Server访问被NetworkPolicy限制的聚合层扩展Pod的可行性分析

先看你配置的NetworkPolicy:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress-to-festiv-app
  namespace: default
spec:
  podSelector:
    matchLabels:
        app: festiv
  policyTypes:
    - Ingress

这个规则的作用是默认拒绝所有入站流量到带有app:festiv标签的Pod,所以K8s API Server默认无法访问该Pod,能否访问取决于以下几个核心因素:

一、CNI插件是否支持NetworkPolicy

  • 如果集群使用flannel这类默认不支持NetworkPolicy的CNI插件,这条"默认拒绝"规则不会生效,API Server可以正常访问目标Pod。
  • 只有当CNI插件(如Calico、Cilium、Kube-router)支持NetworkPolicy时,规则才会被强制执行,此时API Server的访问会被阻断,除非添加允许规则。

二、API Server的部署与网络来源

API Server的流量源标识直接决定NetworkPolicy的匹配逻辑:

  • Pod形式部署(如kubeadm集群):API Server运行在kube-system命名空间的Pod中,带有component: kube-apiserver这类特定标签。要允许访问,需在NetworkPolicy的Ingress规则里添加对该命名空间/标签的允许配置。
  • 节点进程形式部署(二进制部署):API Server运行在节点的主机网络上,流量源是节点的主机IP。此时需要在NetworkPolicy里允许来自集群节点IP段或主机网络的流量。

三、聚合层流量的源IP传递方式

聚合层的流量由K8s API Server转发到扩展APIService对应的Pod,需确认转发流量的源IP是否被正确识别:

  • 如果API Server通过Service转发到目标Pod,源IP可能是API Server的Pod IP或节点IP(取决于Service的externalTrafficPolicy配置)。
  • 如果API Server直接访问目标Pod的IP,源IP就是API Server自身的实际IP(Pod IP或节点IP)。只有NetworkPolicy允许这个源IP的流量,访问才能成功。

四、NetworkPolicy的补充规则配置

如果要让API Server正常访问目标Pod,必须在现有NetworkPolicy中添加明确的Ingress允许规则,示例如下:

# 补充允许kube-system命名空间下的API Server Pod访问
ingress:
- from:
  - namespaceSelector:
      matchLabels:
        kubernetes.io/metadata.name: kube-system
    podSelector:
      matchLabels:
        component: kube-apiserver

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:37:28