Comment avez-vous proprement liste de tous les récipients dans un kubernetes pod?
Je suis à la recherche de la liste de tous les contenants dans un pod dans un script qui rassemblent les journaux de l'après exécution d'un test. kubectl describe pods -l k8s-app=kube-dns
renvoie beaucoup de l'info, mais je suis juste à la recherche d'un retour comme:
etcd
kube2sky
skydns
Je ne vois pas de moyen simple de format de le décrire de sortie. Est-il une autre commande? (et je suppose pire des cas il y a toujours de l'analyse de la sortie de décrire).
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
get
et choisissez l'une des sortie pris en charge par le modèle avec la--output
(-o
) drapeau.Prendre
jsonpath
par exemple,kubectl get pods -l k8s-app=kube-dns -o jsonpath={.items[*].spec.containers[*].name}
vous donneetcd kube2sky skydns
.Autre sortie pris en charge par les modèles de sortie sont go-modèle-modèle de fichier, jsonpath-fichier. Voir http://kubernetes.io/docs/user-guide/jsonpath/ pour savoir comment utiliser jsonpath modèle. Voir https://golang.org/pkg/text/template/#pkg-overview pour comment utiliser go modèle.
Mise à jour: Cochez cette doc pour d'autres exemples de commandes de liste contenant des images: https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/
kubectl get pods -o json
.kubectl get pods kube-dns-q2oh6 -o jsonpath={.spec.containers[*].name}
Réponse
Explication
Cela devient l'objet JSON représentant le pod. Il utilise ensuite kubectl de JSONpath pour extraire le nom de chaque conteneur de la gousse.
Rapide hack pour éviter de construire le JSONpath requête pour un conteneur unique:
containers
etinit containers
si vous voulez une sortie claire de conteneurs sont de chaque Pod
Si vous utilisez
json
comme format de sortie dekubectl get
, vous obtenez beaucoup de détails d'unpod
. Avecjson
des processeurs commejq
il est facile de sélectionner ou de filtre pour certaines parties qui vous intéressent.À la liste des contenants d'un pod
jq
requête ressemble à ceci:Si vous voulez voir tous les détails concernant un conteneur spécifique, essayez quelque chose comme ceci:
- Je utiliser cette option pour afficher l'image de versions sur les gousses.
C'est juste une petite modification de script à partir de ici, avec l'ajout de nouvelles de la ligne de départ de la prochaine console de commande sur la nouvelle ligne, retiré des virgules à la fin de chaque ligne et d'inscription, seuls mes gousses, sans le service de gousses (par exemple
--all-namespaces
option est supprimée).J'ai mis quelques idées suivantes:
Ligne Simple:
Split (pour la lisibilité):