如何解决带有命名空间的 Kubernetes Egress 调用限制
我有应用程序在 K3s 中运行,并且只想实现基于命名空间的网络策略。
让我们假设目前我有三个命名空间 A、B 和 C。我想允许 namespace-A
和剩余的 namespace[B & C]
出口调用的出口(从 pod 到互联网的外部调用)应该被阻止/拒绝。
这在 Kubernetes 网络策略(而不是 calico 或 cilium)中是否可行?
解决方法
您可以定义 the documentation 中所述的 deny all egress
政策:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-egress
namespce: your-namespace
spec:
podSelector: {}
policyTypes:
- Egress
此策略将应用于命名空间中的所有 Pod,因为 Pod 选择器为空,这意味着(引用 documentation):
空的 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
中标有 kube-system
的 Pod。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。