【问题标题】:NetworkPolicy doesn't block all the pods communicationNetworkPolicy 不会阻止所有 pod 通信
【发布时间】:2021-09-13 10:32:15
【问题描述】:

我需要阻止 pod 之间的通信,但我没有这样做。
我在我的 Minikube (v1.21.0) 上安装了weave plug-in,并在同一个命名空间中启动了两个 pod:

 kubectl run nginx1 --image=nginx -n ns1
 kubectl run nginx2 --image=nginx -n ns2

Pod IP:
nginx1 IP:172.17.0.3
nginx2 IP:172.17.0.4

我可以从 nginx2 ping nginx1 和副 vesra。
我想尝试拒绝它,所以我首先尝试使用此网络策略拒绝所有网络:

kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: netpol1
  namespace: earth
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
  ingress: []
  egress: []
EOF

我还是 ping,所以我也尝试了这个:

kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: netpol1
  namespace: earth
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 172.17.0.0/16 
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 172.17.0.0/16
EOF

我仍然可以从同一命名空间中的其他 pod 中对每个 pod 执行 ping 操作。
我验证了weave 已安装:

NAME                                      READY   STATUS    RESTARTS   AGE
coredns-74ff55c5b-2r5z8                   1/1     Running   0          2d3h
etcd-ip-172-31-37-46                      1/1     Running   0          2d3h
kube-apiserver-ip-172-31-37-46            1/1     Running   0          2d3h
kube-controller-manager-ip-172-31-37-46   1/1     Running   0          2d3h
kube-proxy-787pj                          1/1     Running   0          2d3h
kube-scheduler-ip-172-31-37-46            1/1     Running   0          2d3h
storage-provisioner                       1/1     Running   0          2d3h
weave-net-wd52r                           2/2     Running   1          23m

我也尝试重新启动 kubelet,但我仍然可以从每个 pod 访问另一个。
可能是什么原因?

【问题讨论】:

    标签: kubernetes minikube kubernetes-networkpolicy


    【解决方案1】:

    当您指定 Egress 和 Ingress 资源时,您没有指定网络协议。在kubernetes docs 中,您可以看到也可以指定协议。如果您未指定协议,您的 kubernetes 集群会将您的 Egress 和 Ingress 资源默认为协议。

    如果您阻止所有 TCP 或 UDP 网络,您会发现 ping 仍然可以正常工作。这是因为 ping 使用的是 ICMP 网络协议,而不是 TCP 或 UDP。

    您需要的实际配置取决于您的网络插件。我不知道如何配置 Weave 来阻止 ICMP。
    如果您使用的是 Calico,他们的 docs 会解释如何处理 ICMP 协议。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 2021-08-04
      • 2021-03-09
      • 2021-05-13
      • 2011-10-13
      • 2022-12-07
      • 2019-12-23
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多