拒绝和允许 Kubernetes 中 Pod 之间的流量

时间:2021-06-29 12:10:31

标签: kubernetes amazon-eks

我有一个包含多个命名空间的部署,在这个命名空间中我有几个 pod,即:

NS1:

  • Pod1 -> 标签:(app= Pod1)
  • Pod2 -> 标签:(app= Pod2)
  • PodDB-> 标签:(app= PodDB)

NS2:

  • Pod1 -> 标签:(app= Pod1)
  • Pod2 -> 标签:(app= Pod2)
  • PodDB -> 标签:(app= PodDB)

我想以 Pod1 只能访问 PodDB 而不能访问 Pod2 的方式限制它们之间的访问。我还想限制不同命名空间之间的流量。 我正在阅读文档,但我不明白该怎么做。我尝试了几个 NetworkPolicies 但没有成功,因为我不知道如何将特定的拒绝/访问应用于特定的 pod。

有什么帮助吗?

非常感谢。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: uk
spec:
  podSelector:
    matchLabels:
      app: Pod1
  policyTypes:
    - Ingress
  ingress:
    - from:
      - podSelector:
          matchLabels:
            app: Pod2

1 个答案:

答案 0 :(得分:1)

您可以使用此编辑器来帮助您创建NetworkPolicieshttps://editor.cilium.io/

Editor network policy

以下清单将应用于标签为 app=Pod1 的 pod,并将禁用所有传入/传出此类 pod 的呼叫,但对标签为 app=PodDB 的 pod 的呼出呼叫除外。 (请参阅下面的屏幕截图,其中的颜色对理解很有帮助)。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: pod1-policy
  namespace: NS1
spec:
  # the following selector specifies to which pods the rules will be applied
  podSelector:
    matchLabels:
      app: Pod1
  policyTypes:
    - Ingress
    - Egress
  # the following rule deny all incoming requests
  ingress: []
  # the following rule authorize outgoing call only to pod with label app=podDB
  egress:
    - to:
        - podSelector:
            matchLabels:
              app: PodDB