使用gcloud容器集群创建的GKE集群创建后如何清理?

时间:2019-12-01 21:04:26

标签: kubernetes google-compute-engine google-kubernetes-engine gcloud

我正在以编程方式创建Kubernetes集群,以在GitLab CI / CD中进行端到端测试。我正在使用gcloud container clusters create。我做了半年,创建并删除了几百个群集。成本上升和下降。现在,我从Google获得了一笔异常高的账单,并检查了费用明细。我注意到“存储PD容量”的成本> 95%。我发现gcloud container clusters delete从未删除Kubernetes集群中为持久卷声明创建的Google Compute Disk。

如何以编程方式删除这些内容?删除Kubernetes集群和磁盘后还能剩下什么?

2 个答案:

答案 0 :(得分:2)

建议:

  1. 要回答您的紧迫问题:您可以使用Method: disks.delete API以编程方式删除磁盘资源。

  2. 要确定可能还分配了哪些其他资源,请看这里:Listing all Resources in your Hierarchy

  3. 最后,此链接也可能有帮助:GKE: Understanding cluster resource usage

答案 1 :(得分:1)

因为答案的这一部分很长:

gcloud compute disks create disk-a \
--size=10gb \
--zone=us-west1-a \
--labels=something=monday \
--project=${PROJECT}

gcloud compute disks create disk-b \
--size=10gb \
--zone=us-west1-b \
--labels=something=else \
--project=${PROJECT}

然后:

ID=$(gcloud compute disks list \
--filter="name~disk zone~us-west1 labels.something=else" \
--format="value(id)" \
--project=${PROJECT}) && echo ${ID}

NB

  • 过滤器AND是隐式的并且被省略
  • 您可以根据需要删除条款
  • 您应该使过滤器尽可能具体


而且-当您确定时,由于无法恢复删除,

gcloud compute disks delete ${ID} --project=${PROJECT} --region=${REGION}

如果有多个匹配项,则可以迭代:

IDS=$(gcloud compute disks list ...)
for ID in ${IDS}
do
  gcloud compute disks delete ${ID}
done

如果您愿意-出色的jq,您将有一种通用的方式(不是gcloud专用的):

gcloud compute disks list \
--project=${PROJECT} \
--format=json \
| jq --raw-output '.[] | select(.name | contains("disk")) | select(.zone | contains("us-west1")) | select(.labels.something=="else")'
...