Add pv-remover.sh
This commit is contained in:
71
pv-remover.sh
Executable file
71
pv-remover.sh
Executable file
@@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# PV Remover версия 1.0 (15.03.2021)
|
||||||
|
# Автор: Барсуков В.В.
|
||||||
|
# Лицензия GPLv2 или выше.
|
||||||
|
#
|
||||||
|
# Описание:
|
||||||
|
# Средство удаления "застрявших" PV (находящихся в стадии Terminating)
|
||||||
|
#
|
||||||
|
# Использование:
|
||||||
|
# pv-remover.sh
|
||||||
|
#
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# Версия и дата
|
||||||
|
VERNUM="1.0"
|
||||||
|
VERDATE="15.03.2021"
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# Меняем локаль на ru_RU.UTF-8
|
||||||
|
export LC_ALL=ru_RU.UTF-8
|
||||||
|
|
||||||
|
# Выводим шапку
|
||||||
|
echo
|
||||||
|
echo "+------------------------------------------------+"
|
||||||
|
echo "| Средство удаления PV. Версия $VERNUM от $VERDATE |"
|
||||||
|
echo "| PV Remover (PR) |"
|
||||||
|
echo "| (C) Барсуков В.В. |"
|
||||||
|
echo "+------------------------------------------------+"
|
||||||
|
echo "| Формат: pv-remover.sh PV |"
|
||||||
|
echo "+------------------------------------------------+"
|
||||||
|
|
||||||
|
# Если число передаваемых параметров меньше 1
|
||||||
|
if [[ "$#" -lt "1" ]]; then
|
||||||
|
echo "PR: Ошибка. Нет обязательного аргумента."
|
||||||
|
echo "PR: Доступные для удаления PV:"
|
||||||
|
kubectl get pv | grep "Terminating"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Получаем аргумент
|
||||||
|
PV=$1
|
||||||
|
|
||||||
|
# Проверка наличия PV. Если в выходе "NotFound" - ругаемся и выходм
|
||||||
|
STATUS=$(kubectl get pv $PV | grep "NotFound")
|
||||||
|
if ! [[ -z "$STATUS" ]]; then
|
||||||
|
echo "PR: Ошибка. PV $PV не найден."
|
||||||
|
echo "PR: Доступные для удаления PV:"
|
||||||
|
kubectl get pv | grep "Terminating"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверка статуса PV (удаляем только PV в статусе Terminating)
|
||||||
|
STATUS=$(kubectl get pv $PV | grep "Terminating")
|
||||||
|
if [[ -z "$STATUS" ]]; then
|
||||||
|
echo "PR: Ошибка. PV $PV не подходит для удаления."
|
||||||
|
echo "PR: Доступные для удаления PV:"
|
||||||
|
kubectl get pv | grep "Terminating"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Удаляем PV
|
||||||
|
echo "PR: Удаляем PV $PV"
|
||||||
|
kubectl patch pv $PV -p '{"metadata": {"finalizers": null}}'
|
||||||
|
kubectl delete pv $PV --grace-period=0 --force
|
||||||
|
|
||||||
|
# Проверяем удален ли PV
|
||||||
|
echo "PR: Проверяем удален ли PV $PV:"
|
||||||
|
kubectl get pv $PV
|
||||||
|
|
||||||
|
# Выход
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user