有没有办法列出特定运营商创建的所有资源及其状态?
Is there a way to list all resources created by a specific operator and their status?
我使用配置连接器https://cloud.google.com/config-connector/docs/overview
我使用配置连接器提供的 CRD 创建 gcp 资源:
kind: IAMServiceAccount
kind: StorageBucket
etc
现在我真正想要的是能够获得每个资源及其状态的简单列表(无论是否成功创建)。每个资源都是一行,类似于:kind, name, status, etc
kubectl 是否有办法获取由这样的操作员创建的所有资源的列表?我想我可以手动标记所有这些资源并尝试使用标签 select 但我真的不想那样做
编辑
根据评论我可以这样做,但很好奇是否有不那么笨拙的命令
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
我对这个主题做了一些研究,我找到了 2 个可能的解决方案来检索由 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
键中的值(获取 crd 的名称)
| xargs -n 1 kubectl get
- 将输出通过管道传输到 xargs 并将从上一个命令检索到的每个
CRD
用于 运行 $ kubectl get <RESOURCE>
--ignore-not-found
- 不显示有关缺少资源的消息
也可以更改此命令以满足问题中显示的特定需求。
A side note!
Similar command is referenced in the github link I pasted above:
$ kubectl get-all
/ketall
以上命令可用于检索集群中的所有资源。 它们默认不可用 kubectl
,需要额外配置。
有关安装的更多参考可以在此 github 页面中找到:
使用 Kubernetes 官方文档中描述的方法:
Labels are intended to be used to specify identifying attributes of objects
Kubernetes.io: Docs: Concepts: Overview: Working with objects: Labels
你可以标记那些由配置连接器创建的资源(我知道你想避免它)并查找这样的资源:
$ 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
This resources have the .metadata.labels.look=here
added to it's definitions.
其他资源:
我使用配置连接器https://cloud.google.com/config-connector/docs/overview
我使用配置连接器提供的 CRD 创建 gcp 资源:
kind: IAMServiceAccount
kind: StorageBucket
etc
现在我真正想要的是能够获得每个资源及其状态的简单列表(无论是否成功创建)。每个资源都是一行,类似于:kind, name, status, etc
kubectl 是否有办法获取由这样的操作员创建的所有资源的列表?我想我可以手动标记所有这些资源并尝试使用标签 select 但我真的不想那样做
编辑
根据评论我可以这样做,但很好奇是否有不那么笨拙的命令
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
我对这个主题做了一些研究,我找到了 2 个可能的解决方案来检索由 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
键中的值(获取 crd 的名称)
- 使用
| xargs -n 1 kubectl get
- 将输出通过管道传输到 xargs 并将从上一个命令检索到的每个
CRD
用于 运行$ kubectl get <RESOURCE>
- 将输出通过管道传输到 xargs 并将从上一个命令检索到的每个
--ignore-not-found
- 不显示有关缺少资源的消息
也可以更改此命令以满足问题中显示的特定需求。
A side note!
Similar command is referenced in the github link I pasted above:
$ kubectl get-all
/ketall
以上命令可用于检索集群中的所有资源。 它们默认不可用 kubectl
,需要额外配置。
有关安装的更多参考可以在此 github 页面中找到:
使用 Kubernetes 官方文档中描述的方法:
Labels are intended to be used to specify identifying attributes of objects
Kubernetes.io: Docs: Concepts: Overview: Working with objects: Labels
你可以标记那些由配置连接器创建的资源(我知道你想避免它)并查找这样的资源:
$ 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
This resources have the
.metadata.labels.look=here
added to it's definitions.
其他资源: