查找ServceAccount在Kubernates集群中的用法

时间:2020-03-17 12:36:52

标签: kubernetes

我正在三个节点的裸机中运行 Kubernates集群。 我已经应用了几个不同服务的 yaml 文件。 现在,我要在集群中进行排序,并清理一些孤立的kube对象。 为此,我需要了解使用或引用某个 ServiceAccount 的Pod或其他实体的集合。

例如,我可以挖掘管理员用户的ClusterRoleBinding并进行调查:

kubectl get сlusterrolebinding admin-user

但是是否有很好的kubectl选项组合来查找某些 ServiceAccount 所有用法/参考

2 个答案:

答案 0 :(得分:1)

您可以通过以下命令使用服务帐户列出所有资源:

kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="YOUR_SERVICE_ACCOUNT_NAME")]}[{.roleRef.kind},{.roleRef.name}];{end}' | tr ";" "\n"

您只需要将YOUR_SERVICE_ACCOUNT_NAME替换为要调查的那个。

我在群集上测试了此命令,它可以工作。

让我知道此解决方案是否对您有所帮助。

答案 1 :(得分:0)

看看这个project。通过自制软件或krew安装后,您可以使用它找到一个服务帐户,然后查看其作用,范围和来源。它不会告诉哪些Pod在引用它,但仍然是一个有用的工具。

rbac-lookup serviceaccountname --output wide --kind serviceaccount