kubernetes 如何知道k8s中的网络策略涵盖哪些pod

nfg76nw0  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(2)|浏览(159)

我有一个用例,我想检查哪些pod被网络策略覆盖,现在我的重点是k8s生成的网络策略。
最简单的方法是什么?我知道我们可以遍历每个网络策略并从那里过滤掉pod,但是网络策略可以有多种方式来使用pod过滤。我不确定是否有一种方法可以解决网络策略上的每个可能的pod过滤器,然后从中获取pod列表。

6uxekuva

6uxekuva1#

使用podSelector字段可以检查网络策略覆盖的所有Pod。使用podSelector中提到的标签,您可以检索正在使用NetworkPolicy的Pod列表。
每个NetworkPolicy都包含一个podSelector,用于选择该策略适用的Pod分组。让我们考虑一个示例策略,它包含一个标签为“role=db”的podSelector。示例策略选择标签为“role=db”的pod。一个空的podSelector选择命名空间中的所有pod。
运行NetworkPolicy时,可以通过描述networkpolicy来检查用于podSelector的标签。

$ kubectl describe networkpolicy <networkpolicy-name>

Pod选择器将显示此网络策略也适用于哪些标签。然后,您可以通过以下方式显示带有此标签的所有Pod:

$ kubectl get pods -l <podSelector>

有关详细信息,请参阅NetworkPolicy资源。

vuktfyat

vuktfyat2#

在下面的命令中更改netpolName,然后运行:

kubectl get pod -l \
  $( \
        kubectl get netpol netpolName \
        -o jsonpath="{.spec.podSelector.matchLabels}"| \
        jq -r 'to_entries|map("\(.key)=\(.value)")[]' \
  )

相关问题