上下文:我将 EKS 与 calico 插件一起用于网络策略和托管节点组。
我有一个名为“simon-test”的命名空间,我想拒绝从命名空间到其他人的所有出口(因此 simon-test 中的 pod 将无法看到其他命名空间中的其他 pod)。我尝试使用以下网络策略(似乎按预期工作)来做到这一点:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all-egress
namespace: simon-test
spec:
policyTypes:
- Egress
podSelector: {}
egress: []
但这也阻止了命名空间内的所有内部网络。所以为了解决这个问题,我创建了另一个网络策略,它应该允许命名空间内的所有流量:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-internal
namespace: simon-test
spec:
podSelector:
matchLabels: {}
ingress:
- from:
- namespaceSelector:
matchLabels:
name: simon-test
但这并不能解决问题,因为命名空间内仍然没有网络。我很好奇为什么我仍然可以从另一个命名空间中的另一个 pod 到达“simon-test”(我nc -nlvp 9999
在“simon-test”中的一个 pod 中运行,并且nc -z ip-of-pod-in-simon-test-ns 9999
从另一个命名空间的一个 pod 中运行它可以到达它,但是当 ping来自 simon-test 的 pod 不能。)