kubernetes networkpolicy仅允许外部通信到internet
我试图在我的kubernetes集群中实现网络策略,以隔离命名空间中的吊舱,但仍然允许它们访问internet,因为我使用Azure MFA进行身份验证 这是我尝试过的,但似乎无法让它工作。入口按预期工作,但这些策略阻止所有出口kubernetes networkpolicy仅允许外部通信到internet,kubernetes,azure-aks,Kubernetes,Azure Aks,我试图在我的kubernetes集群中实现网络策略,以隔离命名空间中的吊舱,但仍然允许它们访问internet,因为我使用Azure MFA进行身份验证 这是我尝试过的,但似乎无法让它工作。入口按预期工作,但这些策略阻止所有出口 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all spec: podSelector: {} policyTypes: - Ing
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
有谁能告诉我如何进行上述配置,以便我也允许互联网流量,但阻止其他POD的流量?你能这样试试吗
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress,Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
它应该允许所有目的地的出口。但是,如果目的地是pod,它应该被同一网络策略中缺少的进入规则所阻止。除非有网络策略,否则Kubernetes将允许所有流量。 如果设置了网络策略,它将只允许网络策略设置的流量,并拒绝所有其他内容 默认情况下,POD是非隔离的;他们接受来自任何来源的流量 POD通过具有选择它们的网络策略而变得孤立。一旦名称空间中有任何NetworkPolicy选择了特定的pod,该pod将拒绝任何NetworkPolicy不允许的任何连接。(命名空间中未被任何NetworkPolicy选择的其他POD将继续接受所有流量。)
因此,您还需要指定出口规则,以使其按您希望的方式工作:)尝试在命名空间上添加默认的拒绝所有网络策略,然后在之后添加允许Internet策略
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
这将阻止除internet出站之外的所有流量。
在“仅允许internet”策略中,所有专用IP都有一个例外,这将阻止pod到pod的通信。
如果您需要DNS查找,您还必须允许从kube系统到核心DNS的出口,因为默认的拒绝所有策略将阻止DNS查询。我已经尝试过类似的方法,无论如何,我刚刚添加了您的网络策略,我的pod可以与Azure对话,但仍然允许pod到pod的流量。我的测试方法是将一个控制台带到pod,然后对同一命名空间中的另一个pod执行curl。这对我不起作用:(当我添加此项时,我的播客仍然能够通信,但无法访问internet。我认为
172.16.0.0/20
应该是172.16.0.0/12
,因为似乎cidr
应该比ipBlock
缩进一级。
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-internet-only
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.0.0.0/8
- 192.168.0.0/16
- 172.16.0.0/20