如何真正列出一个不存在的命名空间的所有 objects?
How to list really all objects of a nonexistant namespace?
好吧,标题有点啰嗦。但它实际上是描述情况。
我在命名空间 argo-events 中的 GKE 上部署了一项服务。有问题所以我把它拆了:
kubectl delete namespace argo-events
实际上,这已经是问题开始的地方(我怀疑与下面描述的问题有关),我不得不求助于 hack,因为 argo-events 永远陷入了终止状态。但结果如愿 - 名称空间似乎与其中的所有 objects 一起消失了。
由于重新部署的问题,我检查了 GKE Object 浏览器(只是环顾四周 - 无法再过滤 argo-events 命名空间,因为它正式消失了),在那里我偶然发现了两个挥之不去的 objects 在 ns argo-events:
argo-events 未被 kubectl get namespaces
列出。只是确认一下。
我可以找到那两个 objects 如果我专门查找它们:
$ kubectl get eventbus -n argo-events
NAME AGE
default 17h
$ kubectl get eventsource -n argo-events
NAME AGE
pubsub-event-source 14h
但是 - 我找不到任何东西 objects:
$ kubectl get all -n argo-events
No resources found in argo-events namespace.
所以我的问题是。我如何一般地列出 argo-events 中所有挥之不去的 objects?
我问是因为否则我必须检查整个 Object 浏览器树才能找到更多 objects(因为我不能再 select 命名空间了)。
通过使用命令 $ kubectl get all
,您只会打印一些资源,例如:
- 豆荚
- 服务
- 守护进程
- 部署
- 复制集
- 状态集
- 工作
- 定时作业
它不会打印你使用$ kubectl api-resources
时可以找到的所有资源。
例子
当从 PersistentVolume 文档创建 PV
时,它不会在 $ kubectl get all
输出中列出,但如果您指定此资源,它将被列出。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/storage/pv-volume.yaml
persistentvolume/task-pv-volume created
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
task-pv-volume 10Gi RWO Retain Available manual 3m12s
$ kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.3.240.1 <none> 443/TCP 86m
$
如果您想列出来自特定 namespace
的所有资源,您应该使用以下命令:
kubectl -n argo-events api-resources --namespaced=true -o name | xargs --verbose -I {} kubectl -n argo-events get {} --show-kind --ignore-not-found
以上解决方案已在 Github 线程 kubectl get all does not list all resources in a namespace 中提出。在此线程中,您可能会发现上述命令的一些其他变体。
此外,您还可以查看How to List all Resources in a Kubernetes Namespace篇文章。您可以找到使用 function
.
列出资源的方法
好吧,标题有点啰嗦。但它实际上是描述情况。
我在命名空间 argo-events 中的 GKE 上部署了一项服务。有问题所以我把它拆了:
kubectl delete namespace argo-events
实际上,这已经是问题开始的地方(我怀疑与下面描述的问题有关),我不得不求助于 hack,因为 argo-events 永远陷入了终止状态。但结果如愿 - 名称空间似乎与其中的所有 objects 一起消失了。
由于重新部署的问题,我检查了 GKE Object 浏览器(只是环顾四周 - 无法再过滤 argo-events 命名空间,因为它正式消失了),在那里我偶然发现了两个挥之不去的 objects 在 ns argo-events:
argo-events 未被 kubectl get namespaces
列出。只是确认一下。
我可以找到那两个 objects 如果我专门查找它们:
$ kubectl get eventbus -n argo-events
NAME AGE
default 17h
$ kubectl get eventsource -n argo-events
NAME AGE
pubsub-event-source 14h
但是 - 我找不到任何东西 objects:
$ kubectl get all -n argo-events
No resources found in argo-events namespace.
所以我的问题是。我如何一般地列出 argo-events 中所有挥之不去的 objects?
我问是因为否则我必须检查整个 Object 浏览器树才能找到更多 objects(因为我不能再 select 命名空间了)。
通过使用命令 $ kubectl get all
,您只会打印一些资源,例如:
- 豆荚
- 服务
- 守护进程
- 部署
- 复制集
- 状态集
- 工作
- 定时作业
它不会打印你使用$ kubectl api-resources
时可以找到的所有资源。
例子
当从 PersistentVolume 文档创建 PV
时,它不会在 $ kubectl get all
输出中列出,但如果您指定此资源,它将被列出。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/storage/pv-volume.yaml
persistentvolume/task-pv-volume created
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
task-pv-volume 10Gi RWO Retain Available manual 3m12s
$ kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.3.240.1 <none> 443/TCP 86m
$
如果您想列出来自特定 namespace
的所有资源,您应该使用以下命令:
kubectl -n argo-events api-resources --namespaced=true -o name | xargs --verbose -I {} kubectl -n argo-events get {} --show-kind --ignore-not-found
以上解决方案已在 Github 线程 kubectl get all does not list all resources in a namespace 中提出。在此线程中,您可能会发现上述命令的一些其他变体。
此外,您还可以查看How to List all Resources in a Kubernetes Namespace篇文章。您可以找到使用 function
.