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

咨询发送Kubernetes准入Webhook请求的Pod来源以配置网络策略

准入Webhook请求的来源确认与网络策略配置

准入Webhook的请求确实源自kube-apiserver组件,而非集群内其他普通Pod。

核心原因

Kubernetes的准入控制流程中,所有准入Webhook的调用逻辑由kube-apiserver直接触发:当API Server收到资源创建/修改/删除请求时,会根据预配置的Webhook规则,向指定的服务或Pod端点发送审核请求,整个过程无其他Pod参与中转。

验证方式

可以通过两种方式确认来源:

  • 查看Webhook接收Pod的日志,提取请求的源IP,再与kube-system命名空间下kube-apiserver Pod的IP核对(用kubectl get pods -o wide -n kube-system | grep kube-apiserver查看)。
  • 在Webhook服务中添加请求头打印逻辑,观察X-Forwarded-For或直接获取TCP连接的源IP,最终会指向kube-apiserver的Pod或节点IP(取决于集群网络配置)。

目标网络策略示例

要实现"仅允许kube-apiserver访问Webhook端口,拒绝其他Pod连接"的需求,可配置如下NetworkPolicy(需确保集群使用支持NetworkPolicy的CNI插件,如Calico、Cilium):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: webhook-port-restriction
  namespace: your-webhook-ns # 替换为Webhook Pod所在命名空间
spec:
  podSelector:
    matchLabels:
      app: your-webhook-app # 替换为Webhook Pod的标签
  policyTypes:
  - Ingress
  ingress:
  - from:
    # 限定仅kube-system命名空间下的kube-apiserver Pod可访问
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: kube-system
      podSelector:
        matchLabels:
          component: kube-apiserver
    ports:
    - protocol: TCP
      port: 443 # 替换为Webhook监听的实际端口

注意事项

  • 部分自定义集群中,kube-apiserver的标签可能不是component=kube-apiserver,需通过kubectl describe pod <kube-apiserver-pod-name> -n kube-system确认实际标签。
  • 若Webhook通过ClusterIP服务暴露,网络策略直接作用于Pod端口即可;若使用NodePort,需额外考虑节点层面的流量控制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:22:02