web-dev-qa-db-fra.com

Lister toutes les ressources dans un espace de noms

Je voudrais voir toutes les ressources dans un espace de noms.

Faire kubectl get all, malgré son nom, ne listera pas des choses comme des services et des entrées.

Si je connais le type, je peux explicitement demander ce type particulier, mais il semble également qu'il n'y ait pas de commande permettant de répertorier tous les types possibles. (En particulier, kubectl get ne répertorie pas, par exemple, les types personnalisés).

Une idée de comment afficher toutes les ressources avant, par exemple, de supprimer cet espace de nom?

10
michas

Sur la base de this comment , la méthode prise en charge pour répertorier toutes les ressources consiste à parcourir toutes les versions de l’API répertoriées par kubectl api-resources:

kubectl api-resources énumère les types de ressources disponibles dans votre cluster.

cela signifie que vous pouvez le combiner avec kubectl get pour répertorier en réalité chaque instance de chaque type de ressource dans un espace de noms:

kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -l <label>=<value> -n <namespace>
6
rcorre

Tous les objets kubernetes sont stockés dans etcd.

Tous les objets sont stockés dans ETCD v3 de la manière suivante:

/registry/<object_type>/<namespace>/<name>

Je suggère simplement de prendre directement la liste de toutes les ressources de certains espaces de noms depuis etcd v3:

ETCDCTL_API=3 etcdctl --endpoints=<etcd_ip>:2379 get / --prefix --keys-only | grep -E "^/\w+/\w+/<namespace>/+"
1
Nickolay