如何检查网络策略是否已应用于Pod?

时间:2019-02-22 12:39:32

标签: kubernetes google-kubernetes-engine kubernetes-networkpolicy gke-networking

我试图限制我的openvpn以允许访问内部基础结构,并且仅通过“开发”命名空间对其进行限制,因此我从简单的策略开始,该策略拒绝所有出口流量,并且从群集中看不到任何影响或任何反馈,应用后,我已经阅读了所有官方文档,也没有阅读所有文档,也没有找到解决方案,这是我的政策:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: policy-openvpn
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: openvpn
  policyTypes:
  - Egress
  egress: []

我上面已经使用kubectl apply -f policy.yaml命令应用了网络策略,但是我看不到该策略的任何效果,我仍然可以从openvpn pod连接到任何东西,如何调试它并查看我的政策有什么问题?

对我来说,这似乎是一个黑匣子,只能尝试使用try-error方法,而该方法似乎不起作用。

我如何验证它找到吊舱并对其应用策略?

我正在使用GKE提供的最新kubernetes集群

我注意到我没有在Google云端设置中选中“使用networkpolicy”,并且在我检查vpn刚刚停止工作之后,但我不知道如何检查它,或者为什么vpn只允许我连接并阻止所有网络请求,非常奇怪,有没有一种方法可以代替随机更改内容?

2 个答案:

答案 0 :(得分:4)

运行时,您可以检查用于POD选择器的标签:

k describe netpol <networkpolicy-name>
Name:         <networkpolicy-name>
Namespace:    default
Created on:   2020-06-08 15:19:12 -0500 CDT
Labels:       <none>
Annotations:  Spec:
  PodSelector:     app=nginx

Pod选择器将向您显示该netpol也应用了哪些标签。 然后,您可以通过以下方式显示所有带有此标签的豆荚:

k get pods -l app=nginx
NAME                              READY   STATUS    RESTARTS   AGE
nginx-deployment-f7b9c7bb-5lt8j   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-cf69l   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-cxghn   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-ppw4t   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-v76vr   1/1     Running   0          19h

答案 1 :(得分:0)

GKE使用calico实施网络策略。在应用网络策略之前,需要为主节点和节点启用网络网络策略。您可以通过在kube-system名称空间中查找calico pod来验证是否启用了calico。

kubectl get pods --namespace=kube-system

有关验证网络策略的信息,请参见以下命令。

kubectl get networkpolicy
kubectl describe networkpolicy <networkpolicy-name>