Kubernetes Networkpolicy无法按预期工作

时间:2019-03-27 08:32:57

标签: nginx kubernetes kubernetes-networkpolicy

我对Calico的网络政策还很陌生。我在群集上创建了以下NetworkPolicy:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: nginxnp-po
  namespace: default
spec:
  podSelector:
    matchLabels:
      run: nginxnp
  policyTypes:
    - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          acces: frontend
    ports: 
      - port: 80

这就是我的阅读方式:只有具有选择器run=nginxnp的每个Pod才能从端口80上访问所有具有选择器access=frontend的Pod。

这是我的Nginx Pod(其中装有正在运行的Nginx):

$ kubectl get pods -l run=nginxnp
NAME                      READY   STATUS    RESTARTS   AGE
nginxnp-9b49f4b8d-tkz6q   1/1     Running   0          36h

我这样创建了一个busybox容器:

$ kubectl run busybox --image=busybox --restart=Never --labels=access=frontend -- sleep 3600

我可以看到它与选择器access=frontend相匹配:

$ kubectl get pods -l access=frontend
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          6m30s

但是,当我执行到busybox pod并尝试获取nginx pod时,连接仍然被拒绝。

我还尝试设置出口规则,该规则允许流量反过来运行,但这并没有做任何事情。据我了解,网络策略:如果未设置任何规则,则不会阻塞任何内容。因此,当我未设置出口规则时,不应阻止出口。

如果删除网络策略,它将起作用。任何指针都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

NetworkPolicy模板中有一个错字acces: frontend应该是access: frontend

  ingress:
  - from:
    - podSelector:
        matchLabels:
          acces: frontend