0

假设我有一个app=foo在命名空间中有标签的 pod。

我只希望这个 pod 可以从同一命名空间中的其他 2 个 pod 访问(并且没有其他 pod 能够访问它)通过NetworkPolicy

这些 pod 具有以下标签

吊舱1

labels:
  app: foo1
  type: frontend
labels:
  app: foo2
  type: backend

我的问题是我是否能够在以下部分中定义2个podSelector字段ingressNetworkPolicy

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: my-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: foo
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: foo1
          type: frontend
    - podSelector:
        matchLabels:
          app: foo2
          type: backend
    ports:
    - protocol: TCP
      port: 6379

上面的NetworkPolicy定义能满足我的要求吗?

4

2 回答 2

0

假设所有这三个 pod 都在同一个命名空间中,是的,您已经定义了正确的NetworkPolicy. 您的 yaml 文件仅应用于带有标签的 pod foo- 来自集群内部或外部的入口流量将被阻止,但两个带有标签的 pod 都可以从集群内的foo1 frontend任何foo2 backend位置进行通信或接收通信。

笔记:

如果您在默认命名空间中声明值或对象,则您没有将其放入定义中 - 比如namespace: default. 默认情况下,它们将被分配给它。

请参阅:匹配表达式网络策略

阅读更多:declaring-network-policynetwork-policies

看一看:guide-network-policies

于 2020-11-24T10:28:59.653 回答
0

是的,我想是的,我不得不提一下,您编写的清单仅适用于带有标签 foo(仅限于 foo)的 pod,并且来自集群内部或外部的入口流量将被阻止......但是,两者带有标签 foo1 和 foo2 的 pod 可以从集群内的任何地方进行通信或接收通信。你实施了吗?你安装了什么网络插件?

于 2020-11-23T23:12:57.273 回答