Estoy escribiendo una secuencia de comandos en la que quiero reiniciar los pods de kubernetes con el método de reducción de escala.
kubectl scale --replicas=0 myPod -n myNamespace kubectl scale --replicas=3 myPod -n myNamespace Me gustaría que la secuencia de comandos esperara hasta que los pods se estén Running , así que pensé en algo como
while kubectl get pods --field-selector=status.phase=Running -n myNameSpace | grep -c myPod = 3; do sleep 1 echo "." done podría funcionar, pero no hay dados. La parte = 3 no funciona. no puedo simplemente usar
while kubectl get pods --field-selector=status.phase!=Running -n myNameSpace | grep -c myPod > /dev/nullya que los pods comienzan en secuencia, y podría tener mala suerte al consultar solo cuando se implementó un pod, y otros ni siquiera comenzaron.
¿Cómo puedo asegurarme de que el script continúe solo después de que los 3 pods estén en Running ?
Escriba su condición en [ ] y obtenga el valor del comando con ` o $. por ejemplo en tu caso:
while [ "$(kubectl get pods --field-selector=status.phase=Running -n myNameSpace | grep -c myPod)" != 3 ] do sleep 1 echo "wait" done echo "All three pods is running and continue your script"