Nim*_*iat 3 kubernetes google-kubernetes-engine kubernetes-networkpolicy
我正在运行 GKE 集群版本 1.17.13-gke.1400。
我在我的集群中应用了以下网络策略 -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Run Code Online (Sandbox Code Playgroud)
这应该阻止与默认命名空间上的 Pod 之间的所有通信。然而,事实并非如此。从这个测试中可以明显看出 -
$ kubectl run p1 -it --image google/cloud-sdk
root@p1:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=1.14 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=1.21 ms
^C
root@p1:/# curl www.google.com
<!doctype html><html itemscope=" ...
Run Code Online (Sandbox Code Playgroud)
从文档看来,这个应用程序应该非常简单。任何帮助理解我做错了什么,或进一步故障排除的提示,将不胜感激。
谢谢,宁录,
为了使网络策略生效,您的集群需要运行一个网络插件来强制执行它们。Project Calico或Cilium是这样做的插件。这不是创建集群时的默认设置!
因此,首先,您应该检查您的集群是否按照Google Cloud 网络策略文档中的描述进行了相应设置。这以某种方式被抽象掉在--enable-network-policy
标志后面。
如果启用,您应该会在kube-system
命名空间中看到一些 calico pod 。
kubectl get pods --namespace=kube-system
如果有实施网络策略的插件,您需要确保在所需的命名空间中部署了网络策略 - 并检查您的测试使用kubectl run
是否也在该命名空间中执行。您可能在 kube 上下文中配置了其他一些命名空间,并且没有使用您的命令命中默认命名空间。
归档时间: |
|
查看次数: |
637 次 |
最近记录: |