Цикл на выходе и удалить в Bash - PullRequest
0 голосов
/ 27 ноября 2018

Команда, мне нужно удалить 10 сек модулей в кластере k8s, который имеет ошибку.Я получаю их, как показано ниже:

kubectl get pods --all-namespaces | grep -i -e Evict -e Error | awk -F ' ' '{print $1, $2, $4}'
test-asdfasdf asdfasdf2215251 Error
test-asdfasdf asdfasdf2215252 Error
test-asdfasdf asdfasdf2215253 Error
test-asdfasdf asdfasdf2215254 Error
test-asdfasdf asdfasdf2215255 Error
test-asdfasdf asdfasdf2215256 Error

вручную удаляю их так:

kubectl delete pod asdfasdf2215251 -n test-asdfasdf

, но я могу написать скрипт, который просто ищет ошибку на любом модуле и удаляет всеих?Я сам работаю над сценарием, но плохо знаком с этим, поэтому уже поздно ..

1 Ответ

0 голосов
/ 27 ноября 2018

Начальная точка:

kubectl get pods --all-namespaces |
grep -i -e Evict -e Error |
awk -F ' ' '{print $1, $2}' |

создаст поток:

test-asdfasdf asdfasdf2215251
test-asdfasdf asdfasdf2215252
test-asdfasdf asdfasdf2215253
test-asdfasdf asdfasdf2215254
test-asdfasdf asdfasdf2215255
test-asdfasdf asdfasdf2215256

мы можем перейти сюда:

while IFS=' ' read -r arg1 arg2; do
    kubectl delete pod "$arg2" -n "$arg1"
done

мы можем перейти сюда:

xargs -l1 -- sh -c 'kubectl delete pod "$2" -n "$1"' --

или используйте parallel или любой другой инструмент для этого.

...