我有一个k8s群集,该群集将工作节点分散在6个可用区中,因此,出口流量将通过6个nat网关进行路由。我的要求是,应用程序“ xyz”的所有出口流量都应仅通过AZ-A的nat网关进行路由。因此,作为一个解决方案,我在相同的名称空间中创建了一个nginx代理实例,放置一个关联性规则以将其仅绑定到AZ-A,并考虑使用网络策略将xyz
pod的出口流量路由到该代理实例。但是似乎网络策略正在阻止整个出口流量。下面是看起来不错的出口西北策略代码。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: xyz-app-egress
spec:
podSelector:
matchLabels:
app: xyz
policyTypes:
- Ingress
- Egress
ingress:
- {}
egress:
- to:
- podSelector:
matchLabels:
app: proxy
在应用NW策略之后,我正在xyz窗格上使用curl ifconfig.co
进行测试。而且有时会出现以下错误和超时:
curl: (6) Could not resolve host: ifconfig.co
我想我在这里错过了一些东西。有人能提供我对此的任何见解吗?或对此要求有更好的解决方案。
答案 0 :(得分:0)
您应该有here所示的出口规则,而不是入口规则。
egress:
- {}
答案 1 :(得分:0)
在您的示例中,您已阻止了所有DNS查询,因此,解决方法请try this approach,因为使用TCP和UDP协议在端口53上发生DNS流量:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: foo-allow-to-hello
spec:
policyTypes:
- Ingress
- Egress
podSelector:
matchLabels:
app: xyz
ingress:
- {}
egress:
- to:
- podSelector:
matchLabels:
app: proxy
- ports:
- port: 53
protocol: TCP
- port: 53
protocol: UDP