【问题标题】:Delete all unattached Google Persistent Disks in a project删除项目中所有未附加的 Google Persistent Disk
【发布时间】:2021-05-11 08:21:30
【问题描述】:

在 GKE 中,我的PersistentVolumeReclaim Policy 设置为Retain,以防止意外删除数据。但是,有时,在删除一些PersistentVolumes 之后,我想手动删除关联的Google Persistent Disks。使用 Web UI(即 Google Cloud Console)删除 Google Persistent Disks 非常耗时,这就是为什么我想使用 gcloud 命令删除所有未附加到 GCP VM 实例的 Google Persistent Disks。有人可以给我这个命令吗?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine gcloud


    【解决方案1】:

    假设您在正确的区域/区域(使用 gcloud config set compute/zone <my-zone>),这个工作正常:

    gcloud compute disks delete $(gcloud compute disks list --filter="-users:*" --format "value(name)")
    

    【讨论】:

      【解决方案2】:

      您可以在 cloud shell 中使用 gcloud compute disks delete 命令删除所有未附加在 gcp vm 实例中的磁盘。

      gcloud 计算磁盘删除 DISK_NAME [DISK_NAME …] [--region=REGION | --zone=ZONE] [GCLOUD_WIDE_FLAG …]

      您可以通过此命令提供磁盘名称来删除它们。

      disk delete

      【讨论】:

      • 谢谢!但是,我想获得准确的单线,它完全符合我的要求。 IE。只删除未附加的卷。
      【解决方案3】:

      @sandeep-mohanty 包含的链接表明该命令 删除未附加的磁盘。

      假设 (!) 为真(删除前检查),您可以枚举项目的磁盘,然后删除(未附加的)磁盘:

      PROJECT=[[YOUR-PROJECT]]
      
      # Get PAIRS (NAME,ZONE) for all disk in ${PROJECT}
      # Using CSV  (e.g. my-disk,my-zone) enables IFS parsing (below)
      PAIRS=$(\
        gcloud compute disks list \
        --project=${PROJECT} \
        --format="csv[no-heading](name,zone.scope())")
      
      # Iterate over the PAIRS
      for PAIR in ${PAIRS}
      do
        # Extract values of NAME,ZONE from PAIR
        IFS=, read NAME ZONE <<< ${PAIR}
        # Describe
        printf "Attempting to delete disk: %s [%s]\n" ${NAME} ${ZONE}
        # Deleting a disks should only succeed if not attached
        gcloud compute disks delete ${NAME} \
        --zone=${ZONE} \
        --project=${PROJECT} \
        --quiet
      done
      

      注意万一 Google 更改 gcloud compute disks delete 的语义以删除附加磁盘,此脚本将删除项目中的所有磁盘。

      【讨论】:

      • 尝试删除附加磁盘将返回以下错误:gcloud compute disks delete projects/qserv-int-8069/zones/us-central1-c/disks/gke-qserv-int-czar-pool-01ed-d0f9ba57-68en ... ERROR: (gcloud.compute.disks.delete) Could not fetch resource: - The disk resource 'projects/qserv-int-8069/zones/us-central1-c/disks/gke-qserv-int-czar-pool-01ed-d0f9ba57-68en' is already being used by 'projects/qserv-int-8069/zones/us-central1-c/instances/gke-qserv-int-czar-pool-01ed-d0f9ba57-68en' 。我想要一个不尝试删除附加磁盘的脚本以避免此错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多