使用 gcloud container clusters create 创建的 GKE 集群后如何清理?
How to clean up after a GKE cluster created with gcloud container clusters create?
我正在以编程方式创建 Kubernetes 集群以在 GitLab CI/CD 中进行端到端测试。我正在使用 gcloud container clusters create
。我这样做了半年,创建和删除了数百个集群。成本上升和下降。现在,我从 Google 收到了一笔异常高的账单,我检查了费用明细。我注意到 "Storage PD Capacity" 的成本 >95%。我发现 gcloud container clusters delete
从未删除为 Kubernetes 集群中的持久卷声明创建的 Google 计算磁盘。
如何以编程方式删除这些内容?删除 Kubernetes 集群和磁盘后,还能剩下什么运行?
建议:
回答您的直接问题:您可以使用 Method: disks.delete API.
以编程方式删除您的磁盘资源
要确定可能已分配的其他资源,请查看此处:Listing all Resources in your Hierarchy。
最后,这个 link 也可能有帮助:GKE: Understanding cluster resource usage
因为这部分回答比较长:
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")'
...
我正在以编程方式创建 Kubernetes 集群以在 GitLab CI/CD 中进行端到端测试。我正在使用 gcloud container clusters create
。我这样做了半年,创建和删除了数百个集群。成本上升和下降。现在,我从 Google 收到了一笔异常高的账单,我检查了费用明细。我注意到 "Storage PD Capacity" 的成本 >95%。我发现 gcloud container clusters delete
从未删除为 Kubernetes 集群中的持久卷声明创建的 Google 计算磁盘。
如何以编程方式删除这些内容?删除 Kubernetes 集群和磁盘后,还能剩下什么运行?
建议:
回答您的直接问题:您可以使用 Method: disks.delete API.
以编程方式删除您的磁盘资源
要确定可能已分配的其他资源,请查看此处:Listing all Resources in your Hierarchy。
最后,这个 link 也可能有帮助:GKE: Understanding cluster resource usage
因为这部分回答比较长:
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")'
...