为什么网络策略入口不适用于我的情况

问题描述

我用2个吊舱进行了部署:

apiVersion: apps/v1
kind: Deployment
Metadata:
  creationTimestamp: null
  labels:
    app: Nginx
  name: Nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: Nginx1
  strategy: {}
  template:
    Metadata:
      creationTimestamp: null
      labels:
        app: Nginx1
    spec:
      containers:
      - image: Nginx
        name: Nginx
        resources: {}
        ports:
        - containerPort: 80
status: {}

然后使用clusterip公开它,然后创建如下的网络策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
Metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: Nginx1
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend

但是当我使用不包含标签(role = frontend)的busyBox pod通过wget请求它时,我仍然得到Nginx的html页面

我想知道为什么吗?

任何帮助都会非常有用。谢谢:)

解决方法

如果您的k8s集群是使用不支持网络策略的Container Network Interface (CNI)插件部署的,则不会对其产生影响。来自k8s docs

网络策略由网络插件实施。要使用网络策略,您必须使用支持NetworkPolicy 的网络解决方案。在没有实现该控制器的控制器的情况下创建NetworkPolicy资源将无效。