Как сделать kubectl echo namespace при удалении нескольких модулей с одинаковой меткой - PullRequest
0 голосов
/ 23 октября 2019

Я пишу скрипт для удаления нескольких модулей в нескольких пространствах имен. Процесс состоит в том, чтобы сначала пометить все модули для удаления меткой, например kill = true, а затем удалить их все.

Сценарий, как показано ниже:

kubectl label pods pod0 kill=true -n namespace0
kubectl label pods pod1 kill=true -n namespace0
kubectl label pods pod0 kill=true -n namespace1
kubectl label pods pod1 kill=true -n namespace1
......
kubectl delete pod -l kill=true --all-namespaces

При выполнении последнегоscript, эхо-текст, как показано ниже:

pod "pod0" deleted
pod "pod1" deleted
pod "pod0" deleted
pod "pod1" deleted
......

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

Таким образом, мои вопросы таковы:

  1. Можно ли заставить kubectl показывать пространство имен в эхо-тексте?
  2. Если нет, гарантирует ли kubectl порядок удалениякаким-то образом? Как сортировка по пространству имен, имени модуля?

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Как упоминал @P Ekambaram, вы можете вызывать действие удаления pods для каждой записи пространства имен, показывая целевое пространство имен для каждой итерации обработки:

kubectl get ns | awk '{print $1}'| sed '1d'| while read -r namespace; do echo "Namespace: $namespace"; kubectl delete po -l kill=true -n $namespace; done

Надеюсь, вы найдете его полезным в своих исследованиях.

1 голос
/ 23 октября 2019
  1. Можно ли заставить kubectl показывать пространство имен в эхо-тексте?

Нет, я думаю, что это жестко задано в kubectl.

Если нет, гарантирует ли kubectl порядок удаления каким-либо образом? Как сортировка по пространству имен, имя модуля?

Возможно, модули в пространстве имен удалены в алфавитном порядке, однако это не гарантируется . Также возможно, что пространства имен перебираются в алфавитном порядке, однако это также не гарантировано . Короче говоря, на практике это может работать определенным образом, но нет никаких гарантий, на которые вы можете положиться.

Кроме того, если вам необходимо знать точное время удаления каждого модуля, возможно, лучшев любом случае перебрать все пакеты и явно удалить каждую из них.

1 голос
/ 23 октября 2019

Почему бы вам не написать небольшой сценарий для извлечения всех пространств имен, итерации каждого пространства имен и удаления модулей, имеющих метку kill = true.

вы можете отображать пространство имен на каждой итерации.

...