Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

248
Visualizações
Automated script to delete kubernetes pvc by labels AGE

I have a total of 2030 pvc's and I want to delete 2000 pvc's form them and keep the 30.

  • Those 30 pvc's are latest and only less that 2 days old.. so that is why I do not want to delete them. The other all 2000 pvc are more than 2 days old.

  • I want to create a script that runs automatically to delete the pvc's which are more than 2 days old.

some example of my pvcs:

NAME                            STATUS        VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-14353-postgresql-0         Bound         pvc-1a6   8Gi        RWO            gp2            2d15h
data-14354-postgresql-0         Bound         pvc-2d6   8Gi        RWO            gp2            16d
data-14358-postgresql-0         Bound         pvc-9dc   8Gi        RWO            gp2            127m
data-14367-postgresql-0         Bound         pvc-2eb   8Gi        RWO            gp2            65h
data-14370-postgresql-0         Bound         pvc-90d   8Gi        RWO            gp2            56d

now as u can see I have a mixed AGE label.

They can be deleted using:

kubectl delete pvc 

but this will delete all.. and I do not want to delete all!

  • what command or -label for age I can add to run the command to delete all pvc except those with less than 2 days old.
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

TL:DR;

kubectl get pvc --sort-by=.metadata.creationTimestamp --no-headers | tac | cut -d ' ' -f 1 | sed -n 31,2000p | xargs kubectl delete pvc

Let's explain in pieces:

  • kubectl get pvc --sort-by=.metadata.creationTimestamp --no-headers:

    This part lists the PVCs in descending order without the header row

  • tac

    reverse the output and produce ascending order

  • cut -d ' ' -f 1

    Get's the first column which have the PVCs names

  • sed -n 31,2000p

    Prints all the PVCs after line 30 which will contain your 30 PVCs which are less that 2 days old

    p - Print out the pattern space (to the standard output). This command is usually only used in conjunction with the -n command-line option.

    n - If auto-print is not disabled, print the pattern space, then, regardless, replace the pattern space with the next line of input. If there is no more input then sed exits without processing any more commands.

  • xargs kubectl delete pvc

Deletes your PVCs.

over 4 years ago · Santiago Trujillo Relatório

0

There is no easy way to do this by just using a kubectl command, its only easy to operate that way when you can use labels in a good way.

But you can do this programmatically, by using a programming or scripting language against the Kubernetes API Server.

Perhaps, you can in this case, manually add a label to the 30 PVCs that you want to keep, and then delete the PVCs which does not have this label.

If you have managed to label the PVCs that you want to keep, you can use e.g.

 kubectl delete pvc -l !keep

See more about how to add labels and select resources using labels on Labels and Selectors

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda