Kubernetes网络策略拒绝所有不阻止基本通信的策略 [英] Kubernetes network policy deny-all policy not blocking basic communication
本文介绍了Kubernetes网络策略拒绝所有不阻止基本通信的策略的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我运行的是GKE群集版本1.17.13-gke.1400。
我已在我的群集中应用了以下网络策略-
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
它应该阻止与默认命名空间上的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=" ...
从docs来看,这个应用程序似乎应该非常简单。 如能帮助您了解我的错误之处,或提供进一步故障排除的提示,我将不胜感激。
谢谢, 尼姆罗德,
推荐答案
要使网络策略生效,您的群集需要运行网络插件,该插件也会强制实施这些策略。Project Calico或Cilium是这样做的插件。这不是创建集群时的默认设置!
因此,您首先应该检查您的集群是否按照Google Cloud Network Policies docs中所述进行了相应的设置。这以某种方式被抽象到--enable-network-policy
标志后面。
如果启用它,您应该会在kube-system
命名空间中看到一些Calico Pod。
kubectl get pods --namespace=kube-system
kubectl run
的测试是否也在该命名空间中执行。您可能在Kube上下文中配置了某些其他命名空间,但未使用命令命中默认命名空间。
这篇关于Kubernetes网络策略拒绝所有不阻止基本通信的策略的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文