我正在使用 Azure Kubernetes 服务 (AKS),并希望确保特定命名空间内的 pod 只能接收来自同一命名空间中其他 pod 的入口流量。
我找到了这个网络策略来实现这个命名空间隔离(从这里):
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
namespace: my-namespace
name: deny-from-other-namespaces
spec:
podSelector:
matchLabels:
ingress:
- from:
- podSelector: {}
创建此网络策略后,它成功阻止了“my-namespace”上的 pod 与另一个命名空间之间的流量,而“my-namespace”中的 pod 之间的通信仍然是可能的。但是,仅当两个 pod 都安排在同一个节点上时,这才是正确的。如果两个 pod 都在“my-namespace”中但在不同的节点上运行,那么它们之间的连接将不再有效。一旦我删除了上述网络策略,连接就会再次起作用。我认为这不是预期的行为,因为 pod 位于同一个命名空间中,因此应该允许入口流量。有谁知道什么可能导致这个问题?
我正在使用 kubenet 和 calico 网络策略运行 Kubernetes 版本 1.19.6。