Составьте список kubernetes pvc, используя этикетки AGE

У меня в кластере kubernetes aws eks более 4000 пвх.

Из этих 4000+ ПВХ я должен удалить почти 3999 ПВХ, а не 30 штук.

Я буду использовать команду:

kubectl delete pvc --field-selector metadata.name!=<name not to delete>

проверить, прежде чем я буду использовать

kubectl get pvc --field-selector metadata.name!=<name not to delete>
  • теперь, когда я использую команду и добавляю имя pvc только ОДНОГО PVC вместо имени, чтобы не удалять команду, работает .. но когда я добавляю другое имя pvc, а не ОДИН, например kubectl, get pvc --field-selector metadata.name! = pvc1 pvc2 .. НЕ работает

как я уже упоминал, я не хочу удалять 30 pvc, но остальные 4000 я хочу удалить ... поэтому мне нужно добавить эти 30 pvc перед командой. Так что мне нужна помощь в этом.

  • Теперь я также хочу попробовать выбрать ресурсы в bacth по МЕТКАМ ВОЗРАСТА .. Я хочу выбрать только ПВХ, которому больше 2 дней .. как мне это сделать?

person mgb    schedule 31.01.2021    source источник
comment
В кубернетах намного проще выбирать наборы / партии вещей с помощью меток - так устроено большинство вещей в Kubernetes.   -  person Jonas    schedule 31.01.2021
comment
@Jonas, да, вы правы ... но как мне добавить метку AGE (мне нужны только ПВХ, которым больше двух дней).   -  person mgb    schedule 31.01.2021
comment
Теперь я также хочу попытаться выбрать ресурсы в bacth по МЕТКАМ ВОЗРАСТА .. Я хочу выбрать только ПВХ, возраст которых превышает 2 дня .. как мне это сделать? если в вашем первоначальном вопросе есть уже был дан ответ в этой теме, и ответ принят, опубликуйте новый вопрос вместо того, чтобы редактировать этот.   -  person mario    schedule 01.02.2021


Ответы (2)


Ты можешь попробовать

kubectl get pvc --field-selector metadata.name!=pvc1,metadata.name!=pvc2

См. https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get

person iii    schedule 31.01.2021

Хотя это слишком много для задачи, но вы можете использовать что-то вроде ниже, которое также печатает имя для каждого PVC перед удалением, чтобы быть уверенным:

_contains () {  
  echo "$1" | tr ' ' '\n' | grep -F -x -q "$2"
}

deleteList="claim-http-0 claim-http-1"

for each in $(kubectl get pvc -o jsonpath="{.items[*].metadata.name}" | tr " " "\n");
do
  if _contains "${deleteList}" "${each}"; then
    echo $each
    kubectl delete pvc $each
  fi
done
person Krishna Chaurasia    schedule 31.01.2021
comment
спасибо .. это удалит только те, которые находятся в списке удаления, верно? - person mgb; 01.02.2021
comment
да, это правильно - person Krishna Chaurasia; 02.02.2021