在 GKE 中应用出口网络策略后无法从 Pod 连接互联网
unable to connect internet from pod after applying egress network policy in GKE
我在 GKE 中有一个 pod (kubectl run app1 --image tomcat:7.0-slim
) 在应用出口网络策略 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 定义了出口规则,它将阻止所有互联网连接尝试。
如果您需要从您的某些 pods 访问互联网,您可以标记它们并创建一个 NetworkPOlicy 以允许互联网访问。
在下面的示例中,带有标签 networking/allow-internet-egress: "true"
的 pods 将能够访问互联网:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: internet-egress
spec:
podSelector:
matchLabels:
networking/allow-internet-egress: "true"
egress:
- {}
policyTypes:
- Egress
另一个选项是 allow by ip blocks,在下面的示例中,规则将允许 internet 访问 (0.0.0.0
) except for the ipBlocks 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
我在 GKE 中有一个 pod (kubectl run app1 --image tomcat:7.0-slim
) 在应用出口网络策略 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 定义了出口规则,它将阻止所有互联网连接尝试。
如果您需要从您的某些 pods 访问互联网,您可以标记它们并创建一个 NetworkPOlicy 以允许互联网访问。
在下面的示例中,带有标签 networking/allow-internet-egress: "true"
的 pods 将能够访问互联网:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: internet-egress
spec:
podSelector:
matchLabels:
networking/allow-internet-egress: "true"
egress:
- {}
policyTypes:
- Egress
另一个选项是 allow by ip blocks,在下面的示例中,规则将允许 internet 访问 (0.0.0.0
) except for the ipBlocks 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