【问题标题】:How to block traffic from specific namespace in kubernetes如何在 Kubernetes 中阻止来自特定命名空间的流量
【发布时间】:2020-06-08 14:56:49
【问题描述】:

我的 k8 集群中有多个命名空间。我想要的是开发命名空间中的 pod 可以与其他命名空间中的所有其他 pod 通信,但不应该能够与生产命名空间中的资源通信。

我无法找到此方案的文档。有这样的拒绝所有政策

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-egress
spec:
  podSelector: {}
  policyTypes:
  - Egress
  - Ingress

但它适用于同一命名空间中的 pod 级别。我怎样才能修改它以满足我的要求?

【问题讨论】:

    标签: kubernetes kubernetes-networkpolicy


    【解决方案1】:

    参考文档here

    1. environment=dev标记开发环境中的所有命名空间

    2. 使用environment=prod标记生产环境中的所有命名空间

    然后你可以有如下的网络策略

    1. 您已经采用的默认拒绝策略
    2. 有一个策略,将来自标签为 environment=prod 的命名空间中到 Pod 的流量列入白名单

    如下

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: access-nginx
    spec:
      podSelector: {}
      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              environment: "prod"
    

    【讨论】:

    • 我看到了一些可以在这种情况下使用的 nameSelector。虽然找不到任何示例。
    • 我看到了一些可以在这种情况下使用的 nameSelector。虽然找不到任何示例。
    • 所以我猜政策只是允许,不允许的则被拒绝。如果我还有 3 个要允许访问的命名空间,我还需要使用名称选择器添加它们。
    • 默认情况下,Pod 是非隔离的;他们接受来自任何来源的流量
    猜你喜欢
    • 2020-10-09
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2020-09-26
    • 2022-08-12
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多