Kubernetes网络策略拒绝所有不阻止基本通信的策略 [英] Kubernetes network policy deny-all policy not blocking basic communication

查看:0
本文介绍了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 CalicoCilium是这样做的插件。这不是创建集群时的默认设置!

因此,您首先应该检查您的集群是否按照Google Cloud Network Policies docs中所述进行了相应的设置。这以某种方式被抽象到--enable-network-policy标志后面。

如果启用它,您应该会在kube-system命名空间中看到一些Calico Pod。

kubectl get pods --namespace=kube-system

如果有实施网络策略的插件,则需要确保已在所需的命名空间中部署了网络策略,并检查使用kubectl run的测试是否也在该命名空间中执行。您可能在Kube上下文中配置了某些其他命名空间,但未使用命令命中默认命名空间。

这篇关于Kubernetes网络策略拒绝所有不阻止基本通信的策略的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆