我正在尝试实施一些基于 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 网络策略与举几个例子。