首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Kubernetes PVC ebs批量卷

删除Kubernetes PVC ebs批量卷
EN

Stack Overflow用户
提问于 2021-01-29 19:50:41
回答 2查看 765关注 0票数 0

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

  • 我必须从那些4000+ pvc中删除几乎3999个pvc。

现在不用命令:

代码语言:javascript
复制
kubetcl delete pvc pvc-data-name

把每一个pvc分别删除,这会花我很长的时间..我想找到一种方法,把它们分批删除,或者一起删除。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-29 20:36:29

你可以试试这个。

代码语言:javascript
复制
kubectl delete pvc --field-selector metadata.name!=<name-dont-want-to-delete-1>, metadata.name!=<name-dont-want-to-delete-2>, metadata.name!=<name-dont-want-to-delete-3>

或者,您也可以使用go-client来完成这个任务。要使用go客户端执行此操作,请参阅文档参考

我在每个不想删除的pvc中都添加了一个标签。

代码语言:javascript
复制
  labels:
    test: test-1
代码语言:javascript
复制
import (
   "context"
   "fmt"
   metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

   "k8s.io/client-go/kubernetes"
   "k8s.io/client-go/util/homedir"
   "kmodules.xyz/client-go/tools/clientcmd"
   "log"
   "path/filepath"
)

func testFunc() ( error) {
   masterURL := ""

   kubeconfigPath := filepath.Join(homedir.HomeDir(), ".kube", "config")



   config, err := clientcmd.BuildConfigFromFlags(masterURL, kubeconfigPath)
   if err != nil {
       log.Fatalf("Could not get Kubernetes config: %s", err)
   }

   kc := kubernetes.NewForConfigOrDie(config)
   labelSelector := &metav1.LabelSelector{
       MatchExpressions: []metav1.LabelSelectorRequirement{
           {
               "test",
               metav1.LabelSelectorOpNotIn,
               []string{
                   "test-0",
                   "test-1",
               },
           },
       },
   }
   err = kc.CoreV1().PersistentVolumeClaims("default").DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{
       LabelSelector: metav1.FormatLabelSelector(labelSelector),
   })
   fmt.Println(err)
   
   return  nil
}
票数 3
EN

Stack Overflow用户

发布于 2021-01-30 15:35:30

用grep和xargs试试这个

代码语言:javascript
复制
kubectl get pvc | grep -v <name-to-not-include> | xargs kubectl delete pvc --grace-period=0 --force

更新:

对于多种模式:

代码语言:javascript
复制
kubectl get pvc | grep -v 'pattern1\|pattern2' | xargs kubectl delete pvc --grace-period=0 --force
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65960875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档