【问题标题】:Tearing down a GKE cluster to "brand new" state without deleting it?将 GKE 集群拆除为“全新”状态而不删除它?
【发布时间】:2021-09-03 23:30:25
【问题描述】:

我是第一次使用 Kubernetes真的,并且在 GCP 上建立了一个全新的(空的)GKE 集群。

我将尝试使用 YAML Kustomize 文件并尝试在那里部署一些服务,但我真正想要的是一个命令(或一组 kubectl/gcloud 命令)来恢复GKE 集群到一个完全“新”的状态。这是因为它可能需要数十次(或更多!)尝试配置和调整我的 YAML 文件,直到我得到正确的配置和行为,每次我搞砸了我想从一个完全“干净的"/新的 GKE 集群。由于此问题范围之外的原因,删除并重新创建 GKE 集群确实不是一个可行的选择。

我的 Kustomize 文件和部署脚本将创建 Kubernetes 操作员、命名空间、持久卷(和声明)、各种服务和各种其他资源。但我需要能够全部删除/删除它们并将集群恢复到全新的状态。

这可能吗?如果可能,涉及的过程/命令是什么? FWIW 我有集群管理员权限。

【问题讨论】:

  • 我相信您正在寻找this,他们使用命名空间方法来实现完全删除

标签: kubernetes google-kubernetes-engine


【解决方案1】:

正如@dany L 所说,Kubernetes 命名空间将是删除资源的完美选择。使用命令创建自定义命名空间

Kubectl create namespace custom-name 

并将所有资源(Deployment、ReplicaSet、Services 等)部署到命名空间中。

要使用命名空间,您需要在 k8s 命令中添加 --namespace flag

例如:

kubectl create -f deployment.yaml --namespace=custom-namespace

如果你想删除所有这些资源,你只需要删除自定义命名空间。通过删除自定义命名空间,所有其他资源都将被删除。如果没有它,ReplicaSet 可能会在删除现有 pod 时创建新的 pod。运行以下命令删除命名空间。

kubectl delete namespace custom-name

要列出与特定命名空间关联的所有资源,您可以运行以下命令

kubectl api-resources --verbs=list --namespaced -o name  | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>

kubectl api-resources 枚举集群中可用的资源类型。因此,我们可以将它与 kubectl get 结合使用,以列出 Kubernetes 命名空间中每种资源类型的每个实例。

请参阅此link 以列出命名空间中的所有资源。

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 2019-04-16
    • 2022-01-25
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多