应用出口网络策略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。
答案 0 :(得分:1)
发生这种情况是因为您仅在端口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