使用 AGE

问题描述

我的 kubernetes aws eks 集群中有 4000 多个 pvc。

从那些 4000 多个 pvc 中,我必须删除近 3999 个 pvc,而不是像 30 个 pvc 那样删除

我将使用以下命令:

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

在我使用之前进行测试

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

正如我提到的,我不想删除 30 个 pvc,但我想删除其余的 4000 个...所以我需要在命令前面添加那 30 个 pvc。所以我需要这方面的帮助。

  • 现在我也想尝试按 AGE 的 LABELS 在 bacth 中选择资源..我只想选择 2 天以上的 pvc.. 我该怎么做?

解决方法

你可以试试

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

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

,

虽然对于任务来说有点太多了,但您可以使用如下所示的内容,在删除之前打印每个 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