我有一个用例,我想检查哪些pod被网络策略覆盖,现在我的重点是k8s生成的网络策略。最简单的方法是什么?我知道我们可以遍历每个网络策略并从那里过滤掉pod,但是网络策略可以有多种方式来使用pod过滤。我不确定是否有一种方法可以解决网络策略上的每个可能的pod过滤器,然后从中获取pod列表。
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资源。
vuktfyat2#
在下面的命令中更改netpolName,然后运行:
kubectl get pod -l \ $( \ kubectl get netpol netpolName \ -o jsonpath="{.spec.podSelector.matchLabels}"| \ jq -r 'to_entries|map("\(.key)=\(.value)")[]' \ )
2条答案
按热度按时间6uxekuva1#
使用podSelector字段可以检查网络策略覆盖的所有Pod。使用podSelector中提到的标签,您可以检索正在使用NetworkPolicy的Pod列表。
每个NetworkPolicy都包含一个podSelector,用于选择该策略适用的Pod分组。让我们考虑一个示例策略,它包含一个标签为“role=db”的podSelector。示例策略选择标签为“role=db”的pod。一个空的podSelector选择命名空间中的所有pod。
运行NetworkPolicy时,可以通过描述networkpolicy来检查用于podSelector的标签。
Pod选择器将显示此网络策略也适用于哪些标签。然后,您可以通过以下方式显示带有此标签的所有Pod:
有关详细信息,请参阅NetworkPolicy资源。
vuktfyat2#
在下面的命令中更改netpolName,然后运行: