我有在 K3s 中运行的应用程序,并且只想实现基于命名空间的网络策略。
假设目前我有三个命名空间 A、B 和 C。我想允许出口(从 pod 到 Internet 的外部调用)并且应该阻止/拒绝namespace-A
剩余的出口调用。这在 Kubernetes 网络策略中是否可行(而不是 calico 或 cilium)?namespace[B & C]
问问题
117 次
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 回答