将 GKE 集群拆除到 "brand new" 状态而不删除它?
Tearing down a GKE cluster to "brand new" state without deleting it?
我第一次玩 Kubernetes 真的,并且在 GCP 上有一个全新的(空的)GKE 集群。
我将尝试使用 YAML Kustomize 文件并尝试在那里部署一些服务,但我真正需要的是一个命令(或一组 kubectl
/gcloud
命令)将 GKE 集群恢复到一个全新的状态。这是因为它可能需要几十次(或更多!)尝试来配置和调整我的 YAML 文件,直到我得到配置和行为恰到好处,每次我搞砸了我都想从一个完全“干净的”开始"/新的 GKE 集群。由于超出此问题范围的原因,删除并重新创建 GKE 集群确实不是一个可行的选择。
我的 Kustomize 文件和部署脚本将创建 Kubernetes 运算符、命名空间、持久卷(和声明)、各种服务和各种其他资源。但我需要能够 drop/delete 它们全部并将集群恢复到全新状态。
这是否可能,如果可能,涉及的 process/command(s) 是什么? FWIW 我有集群管理员权限。
正如@dany L 所提到的,Kubernetes 命名空间将是删除资源的完美选择。使用命令
创建自定义命名空间
Kubectl create namespace custom-name
并将所有资源(Deployment、ReplicaSet、Services 等)部署到命名空间中。
要使用命名空间,您需要在 k8s 命令中添加 --命名空间标志。
例如:
kubectl create -f deployment.yaml --namespace=custom-namespace
如果要删除所有这些资源,只需删除自定义命名空间即可。通过删除自定义命名空间,将删除所有其他资源。没有它,ReplicaSet 可能会在删除现有 pods 时创建新的 pods。 运行 下面的命令用于删除命名空间。
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列出命名空间中的所有资源。
我第一次玩 Kubernetes 真的,并且在 GCP 上有一个全新的(空的)GKE 集群。
我将尝试使用 YAML Kustomize 文件并尝试在那里部署一些服务,但我真正需要的是一个命令(或一组 kubectl
/gcloud
命令)将 GKE 集群恢复到一个全新的状态。这是因为它可能需要几十次(或更多!)尝试来配置和调整我的 YAML 文件,直到我得到配置和行为恰到好处,每次我搞砸了我都想从一个完全“干净的”开始"/新的 GKE 集群。由于超出此问题范围的原因,删除并重新创建 GKE 集群确实不是一个可行的选择。
我的 Kustomize 文件和部署脚本将创建 Kubernetes 运算符、命名空间、持久卷(和声明)、各种服务和各种其他资源。但我需要能够 drop/delete 它们全部并将集群恢复到全新状态。
这是否可能,如果可能,涉及的 process/command(s) 是什么? FWIW 我有集群管理员权限。
正如@dany L 所提到的,Kubernetes 命名空间将是删除资源的完美选择。使用命令
创建自定义命名空间Kubectl create namespace custom-name
并将所有资源(Deployment、ReplicaSet、Services 等)部署到命名空间中。
要使用命名空间,您需要在 k8s 命令中添加 --命名空间标志。
例如:
kubectl create -f deployment.yaml --namespace=custom-namespace
如果要删除所有这些资源,只需删除自定义命名空间即可。通过删除自定义命名空间,将删除所有其他资源。没有它,ReplicaSet 可能会在删除现有 pods 时创建新的 pods。 运行 下面的命令用于删除命名空间。
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列出命名空间中的所有资源。