如何解决在GKE中应用出口网络策略后,无法从Pod连接Internet
应用出口网络策略kubectl run app1 --image tomcat:7.0-slim
命令无法连接互联网后,我在GKE中有一个吊舱(apt-get update
)。
应用政策之前:
应用策略后:
这是适用的政策:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: app2-np
namespace: default
spec:
podSelector:
matchLabels:
name: app2
policyTypes:
- Egress
- Ingress
ingress:
- {}
egress:
- to:
- podSelector:
matchLabels:
name: app3
ports:
- port: 8080
- ports:
- port: 80
- port: 53
- port: 443
此处可以在相同名称空间中连接app3 pod的8080端口。请帮助纠正我的netpol。
解决方法
发生这种情况是因为您仅在端口8080上为app3定义了出口规则,这将阻止所有Internet连接尝试。
如果您需要从某些吊舱中使用访问Internet,则可以标记它们并创建NetworkPOlicy以允许访问Internet。
在下面的示例中,标记为networking/allow-internet-egress: "true"
的广告连播将可以访问互联网:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: internet-egress
spec:
podSelector:
matchLabels:
networking/allow-internet-egress: "true"
egress:
- {}
policyTypes:
- Egress
另一个选项是ip阻止,在下面的示例中,规则将允许ipBlocks 0.0.0.0
10.0.0.0/8
)除外
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
最后,在this网站上,您可以很好地可视化NetworkPolices,以了解确切的行为。
参考:
https://www.stackrox.com/post/2020/01/kubernetes-egress-network-policies/
Kubernets networkpolicy allow external traffic to internet only
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。