Je travaille actuellement sur un script bash
pour réduire le temps qu'il me faut pour construire la base de données
d'un projet.
Actuellement, j'ai plusieurs bases de données fonctionnant dans le même espace de noms et je souhaite extraire uniquement le nom du pod spécifique.
Je lance kubectl get pods
NAME READY STATUS RESTARTS AGE elastic 1/1 Running 0 37h mysql 1/1 Running 0 37h
Maintenant, je veux enregistrer l'un des noms de pod.
J'exécute actuellement ce foo = $ (kubectl get pods | grep -e "mysql")
et il renvoie mysql 1/1 Running 0 37h
qui est le résultat attendu de la commande. Maintenant, je veux juste pouvoir extraire le nom du pod en tant que variable afin de pouvoir le transmettre ultérieurement.
3 Réponses :
Cela devrait fonctionner pour vous
foo=$(kubectl get pods | awk '{print $1}' | grep -e "mysql")
kubectl
vous permet déjà d'extraire uniquement les noms:
kubectl get pods -o=jsonpath='{.items..metadata.name}' | fgrep mysql
Si je ne me trompe pas, vous devez simplement obtenir uniquement les noms de pods pour les réutiliser plus tard.
Le kubectl get --help
fournit beaucoup de bonnes informations sur ce que vous pouvez réaliser avec juste un kubectl
sans invoquer le reste de l'artillerie lourde comme awk
, sed
, etc.
Répertoriez un seul pod au format de sortie JSON.
kubectl get -o json pod web-pod-13je7
Répertoriez les informations sur les ressources dans des colonnes personnalisées.
kubectl get pod test-pod -o custom-columns = CONTAINER: .spec.containers [0] .name, IMAGE: .spec.containers [0] .image
Renvoie uniquement la valeur de phase du pod spécifié.
kubectl get -o template pod / web-pod-13je7 --template = {{. status.phase}}
Dans ce cas particulier, je vois au moins 2 solutions de contournement:
1) Colonnes personnalisées. Vous pouvez obtenir pratiquement n'importe quelle sortie (et ensuite vous pouvez grep
/ tr
/ awk
si nécessaire):
kubectl get pods -o=jsonpath='{.items..metadata.name}'
Utilisez
foo = $ (kubectl get pods | awk '$ 1 ~ / mysql / {print $ 1}'
Je ne comprends pas. Vous souhaitez extraire
mysql
de la sortie? Et vous le faites en greppingmysql
?Je parie qu'il pourrait y avoir une structure
mysql-deployment-xxxxx-yyyy