【问题标题】:Deleting all the associate persistent disks when deleting cluster删除集群时删除所有关联的永久磁盘
【发布时间】:2020-04-26 13:25:55
【问题描述】:

根据删除集群时的文档,永久磁盘仍然存在(https://cloud.google.com/kubernetes-engine/docs/how-to/deleting-a-cluster)。我想在删除集群时删除所有关联的永久磁盘,但我不知道永久磁盘的名称/ID。 Cluster get API 没有关于磁盘和节点的任何信息。

resp, err := containerService.Projects.Zones.Clusters.Get(project, zone, cluster).Context(ctx).Do()

【问题讨论】:

  • 你使用的是有状态集吗?
  • 你能详细说明什么样的磁盘?就像您指的是节点磁盘还是 PV 存储?默认情况下,节点磁盘具有相同的节点名称,如果您要查找的内容请告诉我
  • 您能否提供文档,说明删除集群时永久磁盘仍然存在?
  • @Alioua,是的,我说的是与节点同名的永久磁盘。但是由于节点是在集群创建中动态创建的,如何获取节点名称?我使用了 get api,但没有此信息。
  • @Alioua 这是我在删除集群 PD 时要删除的文档。 cloud.google.com/kubernetes-engine/docs/how-to/…

标签: go google-cloud-platform google-kubernetes-engine google-persistent-disk


【解决方案1】:

Cloud SDK 可用于在解析正确的过滤器和格式时识别磁盘

列出 GKE 使用的所有磁盘(您可以在方便时更改 the filter

gcloud compute disks list --format="table(name,users)" --filter="name~^gke-"

仅列出用作 PVC 的磁盘

gcloud compute disks list --format="table(name,users)" --filter="name~^gke-.*-pvc-.*"

最后一条命令将列出分离的 PVC 磁盘

gcloud compute disks list --format="table(name,users)" --filter="name~^gke-.*-pvc-.* AND -users:*"

为确保集群不使用分离的磁盘,这里有一个 kubectl 命令来列出集群的 PV 及其 GCE PD:

kubectl get pv -o custom-columns=K8sPV:.metadata.name,GCEDisk:spec.gcePersistentDisk.pdName

对应的API方法是disks.list

【讨论】:

【解决方案2】:

要获取节点名 run ,则磁盘名与节点名相同。您可以在集群之后删除磁盘,但您需要在删除之前运行 kubectl get nodes。 要获取磁盘 ID,您可以使用 gcloud 命令:gcloud compute disks describe --zone | grep“身份证” 请点击此链接了解有关如何删除集群磁盘的 Google 最佳做法:链接

【讨论】:

  • 我想在 go 中做。另外,您提供的链接无效
  • 抱歉没有粘贴链接here is it
  • 磁盘名就是节点名(都是一样的)
  • 是的,它们是一样的。但是如何通过 Go API 获取节点名称?!@Alioua
【解决方案3】:

为了实现您正在寻找的内容,以下谷歌文档将有助于使用两种方法通过 Go API 获取节点名称1nodeget> 2 instagroupget>

【讨论】:

  • 有了这些可以得到baseinstanceName并基于它删除......它没有给出节点名称/id。另外,如果集群已经被删除了怎么办。
  • @Samira 两种方法都应该在删除集群之前使用以获取磁盘名称第一种是获取节点池的实例组管理器,第二种方法用于获取实例来自实例组管理器的名称(请记住,磁盘名称与节点名称相同)您可以在一个 Golang 脚本中使用这两种方法来获取磁盘名称,首先删除集群,然后在所有这些之后删除磁盘一个脚本。让我知道输出。
  • @Alioua 正如我上面提到的,Get instanceGroupManager 没有节点的名称/ID。唯一相关的字段是 baseInstanceName。这是我指的页面cloud.google.com/compute/docs/reference/rest/v1/…
  • 哦,好的,那么这个method 会给你实例名称字段
【解决方案4】:

对于有状态集,将创建以下格式的磁盘

gke-standard-cluster-3-pvc-8586b7f8-37fd-11ea-beff-42010a80012a

standard-cluster-3 将是您的集群的名称 pvc-8586b7f8-37fd-11ea-beff-42010a80012a 将是您的卷的名称

也就是说,您可以使用此 method 来捕获由有状态集创建的永久磁盘的名称。

【讨论】:

  • 如果约定改变怎么办?此外,它不适用于具有长名称的集群。
猜你喜欢
  • 2020-01-03
  • 2017-04-04
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
相关资源
最近更新 更多