我是 Kubernetes 网络的新手。
我们已将 Kubernetes 集群分成一组命名空间(例如 namespace-a
、 namespace-b
)。每个命名空间都有一组 Kubernetes pod。每个 Pod 都有一个服务,可在 my-svc.namespace-x.svc.cluster.local
上获得。 .
现在,我们要防止 命名空间的 Pod namespace-a
与属于 namespace-b
的服务或 Pod 交谈和 反之亦然 .通讯内命名空间应该是不受限制的。
这是我在网络策略文档中找到的示例:
https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
据我了解,对于跨命名空间的所有 pod,这完全阻止了网络通信。
最佳答案
Do I need a networking plugin, such as Calico, Flannel or Weave?
无论您需要什么网络插件,但并非所有插件都支持
NetworkPolicy
API 对象。根据Declare Network Policy walkthrough ,以下是支持 NetworkPolicy
的插件列表(可能并非详尽无遗) :没有支持
NetworkPolicy
的插件,创建资源将不起作用。Which one should I choose?
至于你应该选择哪一个,stackoverflow 不是征求这种建议的地方。我可以推荐的是阅读有关各种可用选项的概述/功能文档。也许在本地开发集群中尝试一两个不同的插件,以了解它们安装、维护和更新的难易程度。
How can I allow all network traffic, but only within a particular namespace?
鉴于您的示例设置,我认为以下
NetworkPolicy
资源将满足您的需求:对于
namespace-a
中的 pod , 只允许来自 namspace-a
的入口pods,拒绝来自任何其他来源的入口。导出不受限制:apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: namespace-a
spec:
policyTypes:
- Ingress
podSelector: {}
ingress:
- from:
- namespaceSelector:
matchLabels:
name: namespace-a
对于
namespace-b
中的 pod , 只允许来自 namspace-b
的入口pods,拒绝来自任何其他来源的入口。导出不受限制:apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: namespace-b
spec:
policyTypes:
- Ingress
podSelector: {}
ingress:
- from:
- namespaceSelector:
matchLabels:
name: namespace-b
请注意,这假设您已设置
name: namespace-a
和 name: namespace-b
命名空间上的标签,类似于:apiVersion: v1
kind: Namespace
metadata:
name: namespace-a
labels:
name: namespace-a
other: labelname
我只是指出这一点,以避免混淆我上面显示的标签恰好与您假设的命名空间名称相匹配的事实。标签可以是任意的,并且可能包含多个命名空间——例如,您可能有
namespace-a
和 namespace-c
两者都带有一个名为 other: labelname
的标签这将允许您使用单个 namespaceSelector
选择多个命名空间在您的 NetworkPolicy
资源。
关于networking - 防止 Kubernetes 中的命名空间间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48894816/