J'essaie de vérifier l'état d'un pod à l'aide de la commande d'attente kubectl via ce documentation . Voici la commande que j'essaie
kubectl wait --for=condition=complete --timeout=30s -n d1 job/test-job1-oo-9j9kj
Voici l'erreur que je reçois
Kubectl error: status.conditions accessor error: Failure is of the type string, expected map[string]interface{}
et mon kubectl -o json output can be accessed via this github
lien .
Quelqu'un peut-il m'aider à résoudre le problème
Il semble que vous exécutiez kubectl wait --for=condition=complete
sur un Pod comme décrit dans votre sortie plutôt que sur un Job .
Un pod n'a pas le --for=condition=complete
option. Exactement, ce que j'obtiens quand je l'exécute sur un pod:
$ kubectl wait --for=condition=complete pod/mypod-xxxxxxxxxx-xxxxx
error: .status.conditions accessor error: Failure is of the type string, expected map[string]interface{}
Pour attendre que votre pod soit en cours d'exécution, vérifiez "condition = prêt". De plus, préférez filtrer par étiquette, plutôt que de spécifier l'ID du pod. Par exemple:
$ kubectl wait --for=condition=ready pod -l app=netshoot
pod/netshoot-58785d5fc7-xt6fg condition met
ne autre option, consiste à attendre la fin du déploiement:
$ kubectl rollout status deployment netshoot
deployment "netshoot" successfully rolled out
Les deux options fonctionnent très bien dans les scripts d'automatisation, lorsqu'il est nécessaire d'attendre qu'une application soit en cours d'exécution.