kubernetes - 有没有办法列出特定操作员创建的所有资源及其状态?
问题描述
我使用配置连接器https://cloud.google.com/config-connector/docs/overview
我使用配置连接器提供的 CRD 创建 gcp 资源:
kind: IAMServiceAccount
kind: StorageBucket
etc
现在我真正想要的是能够获得每个资源及其状态的简单列表(如果它创建成功与否)。每个资源都是一行,类似于:kind, name, status, etc
kubectl 有没有办法获取由这样的操作员创建的所有资源的列表?我想我可以手动标记所有这些资源并尝试使用标签进行选择,但我真的不想这样做
编辑
根据评论,我可以这样做,但好奇是否有不那么笨拙的命令
kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true \
-o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 \
kubectl get -Ao jsonpath='{range .items[*]}{" Kind: "}{@.kind}{"Name: "}{@.metadata.name}{" Status: "}{@.status.conditions[].status}{" Reason: "}{@.status.conditions[].reason}{"\n"}{end}' --ignore-not-found
解决方案
我对此主题进行了一些研究,并找到了两种可能的解决方案来检索由以下人员创建的所有资源config-connector
:
$ kubectl api-resources
方法$ kubectl get-all
/ketall
方式labels
(默认不安装请看说明)
可以在此处找到引用类似问题的讨论:
$ kubectl api-resources
正如我在评论中指出的那样,您可以使用以下表达式:
kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 kubectl get --ignore-not-found
剖析这个解决方案:
kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true
- 检索
Customer Resource Definitions
具有匹配选择器的
- 检索
-o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
- 使用
jsonpath
仅检索存储在.metadata.name
key 中的值(获取 crd 的名称)
- 使用
| xargs -n 1 kubectl get
- 将输出通过管道传输到xargs并使用
CRD
从上一个命令中检索到的每个命令来运行$ kubectl get <RESOURCE>
- 将输出通过管道传输到xargs并使用
--ignore-not-found
- 不显示有关缺少资源的消息
也可以更改此命令以适应问题中显示的特定需求。
旁注!
我在上面粘贴的 github 链接中引用了类似的命令:
$ kubectl get-all
/ketall
以上命令可用于检索集群中的所有资源。它们在默认情况下不可用,kubectl
需要额外配置。
关于安装的更多参考可以在这个 github 页面中找到:
使用官方 Kubernetes 文档中描述的方法:
标签旨在用于指定对象的标识属性
您可以标记由配置连接器创建的那些资源(我知道您想避免它)并查找以下资源:
$ kubectl get-all -l look=here
NAME NAMESPACE AGE
storagebucket.storage.cnrm.cloud.google.com/config-connector-bucket config-connector 135m
storagebucket.storage.cnrm.cloud.google.com/config-connector-bucket-test config-connector 13s
此资源已
.metadata.labels.look=here
添加到它的定义中。
其他资源:
推荐阅读
- amazon-mws - 亚马逊 MWS 订单报告的具体工作原理
- xamarin - 如何在 Xamarin 的 CompletableFuture 对象中使用 Exceptionally 阶段?
- html - 向 ManyToManyField 发出 Django 发布请求
- c# - 每当调用类方法时自动调用方法?
- python - 有没有在 tkinter 中导入 openpyxl 的特定方法?
- pytorch - 尝试使用 nn.Dataparallel 并行化数据后遇到问题
- sql - 如何使用 watchkit 实现 watch-only 数据库
- python - 大型数组乘法后,进程关联性转到 {0}
- javascript - 将动画笑脸添加到范围滑块旋钮
- java - 使用 maven 安装 webscraper