Calico Kubernetes 网络策略拒绝所有流量,未按预期工作

Calico Kubernetes 网络策略拒绝所有流量,未按预期工作

我正在尝试实施一些基于 Calico 的 Kubernetes 网络策略。我已经在集群中设置了 Calico,并且所有基于 Calico 的 pod 都运行良好。
在我的集群中,有两个 pod。
1. 一个 Nginx pod
2. Apache pod

我的需求是需要添加一个 NetworkPolicy 来控制 Nginx pod 中的网络流量。我希望阻止从 Nginx pod 到 Apache pod 的出站流量。但是,我想从 Nginx pod ping 到 8.8.8.8。

简而言之,我只想阻止从 Nginx pod 到 Apache pod 的流量。
我的 YAML 文件如下:

calico-拒绝范围策略-yaml

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: deny-egress-external
  namespace: nginx
spec:
  selector:
    app == 'nginx'
  types:
    - Egress
  egress:    
    - action: Deny
      protocol: TCP
      source:
        nets:
        - 192.168.163.0/25
      destination:
        nets:
        - 192.168.163.204/32
        notNets:
        - 8.8.8.8/32

但问题是 Nginx pod 正在获得“全部拒绝”效果。我无法从 Nginx pod ping 任何 IP。整个流量都被阻止了。

如何根据自己的需要定制出站和入站流量?任何符合上述要求的工作示例都值得赞赏。

答案1

您需要在目标的选择器标签中提及目标 pod,如下所示:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: deny-egress-external
  namespace: nginx
spec:
  selector:
    app == 'nginx'
  types:
    - Egress
  egress:    
    - action: Deny
      protocol: TCP
      source:
        nets:
        - 192.168.163.0/25
      destination:
        Selector:
          app == 'apache'
        nets:
        - 192.168.163.204/32
        notNets:
        - 8.8.8.8/32

请参阅此文档Calico 网络策略举几个例子

相关内容