1

我有在 K3s 中运行的应用程序,并且只想实现基于命名空间的网络策略。

假设目前我有三个命名空间 A、B 和 C。我想允许出口(从 pod 到 Internet 的外部调用)并且应该阻止/拒绝namespace-A剩余的出口调用。这在 Kubernetes 网络策略中是否可行(而不是 calico 或 cilium)?namespace[B & C]

4

1 回答 1

1

您可以定义文档deny all egress中描述的策略:

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

此策略将应用于命名空间中的所有 pod,因为 pod 选择器为空,这意味着(引用文档):

一个空的 podSelector 选择命名空间中的所有 pod。

该策略将阻止所有出口流量,因为它具有Egress策略类型但没有任何egress部分。

如果您想允许集群内出口,您可能需要egress在策略中添加一个部分,例如:

  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          networking/namespace: kube-system
      podSelector:
        matchLabels:
          k8s-app: kube-dns
    ports:
    - protocol: TCP
      port: 53
    - protocol: UDP
      port: 53

这允许来自您创建网络策略的命名空间的所有流量到端口 53(TCP 和 UDP)上k8s-app: kube-dns的命名空间中标记为的 pod。kube-system

于 2021-07-06T07:11:54.393 回答