首页 > 解决方案 > 允许 from-pod label 等于 to-pod label 的流量

问题描述

我正在尝试在 kubernetes 中设置一个网络策略,其中允许具有相同键标签值的一组通用 pod 在一个端口上进行流量。

说有:

Pod A:
 labels:
  meshId="d5ea1b48"

Pod B:
 labels:
  meshId="d5ea1b48"

以及更多具有相同标签的 pod meshId=d5ea1b48。网格表示一个网格网络,其中所有包含的 pod 都被允许在一个端口上进行通信。

我的目标用 yaml 解释:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: example
spec:
  podSelector:
    matchLabels:
      meshId: %meshId of from-pod%
  ingress:
  - ports:
    - port 1234
    - protocol: TCP
  - from:
      - podSelector:
          matchLabels:
            meshId: %meshId of to-pod%

因此,如果我没记错的话,这个配置说:我想拒绝那些没有相同meshId.

有没有办法为所有可能meshId的 s 创建一个 kubernetes NetworkPolicy ?这种解决方案在 yaml 中的外观如何?

我不想为每个新的 NetworkPolicy 创建一个新的 NetworkPolicy,meshId因为它们会很多,而且我还认为如果有 50.000 多个 NetworkPolicy,这会损害集群网络的性能。

标签: networkingkubernetespolicykubernetes-networkpolicy

解决方案


无法以您提出的方式概括标签选择器。请注意,网络策略旨在加强基础,以便只有真正的流量进出。

我还想向您指出一个事实,即您为什么最终会获得 50000 的额外保单。这意味着您对 pod 的选择器策略不好。考虑改变这一点,而不是相反。你几乎可以做到这一点!

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1    
metadata:
 name: example
spec:
 podSelector:
  matchLabels:
   meshId: value1
 ingress:
 - ports:
  - port 1234
  - protocol: TCP
 - from:
  - podSelector:
      matchLabels:
        meshId: value1

推荐阅读