如何删除所有资源库伯内特一次?

包括:

  • 守护者集合
  • 部署
  • 工作
  • 豆荚
  • 副本集
  • 复制控制器
  • 状态集
  • 服务
  • ...

如果有复制控制器,当删除一些部署时,它们将重新生成。有没有办法让 kubentes 返回到初始化状态?

202452 次浏览

Kubernetes 命名空间将是您的完美选择。

kubectl create -f custom-namespace.yaml

$  apiVersion: v1
kind: Namespace
metadata:
name:custom-namespace

现在,您可以在该自定义名称空间中部署所有其他资源(Deployment、 ReplicaSet、 Services 等)。

如果要删除所有这些资源,只需删除自定义名称空间即可。通过删除自定义命名空间,将删除所有其他资源。如果没有它,ReplicaSet 可能会在删除现有 pods 时创建新 pods。

要使用 Namespace,您需要向 k8s 命令添加—— Namespace 标志。

例如:

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

您可以在自定义名称空间中列出所有 pods。

kubectl get pods --namespace=custom-namespace

方法1 : 使用 kubectl delete从当前名称空间(通常是 违约名称空间)中删除所有内容:

kubectl delete all --all

all指所有资源类型,如吊舱、部署、服务等。--all用于删除该资源类型的每个对象,而不是使用其名称或标签指定它。

要删除特定名称空间中的所有内容,请使用-n 标志:

kubectl delete all --all -n {namespace}

方法2 : 您也可以删除一个名称空间并重新创建它,这将删除属于它的所有内容:

kubectl delete namespace {namespace}
kubectl create namespace {namespace}

注意 (感谢 @ Marcus) : 库伯内特 并不代表所有的库伯内对象中的 all,例如管理级资源(限制、配额、策略、授权规则)。如果您真的想确保删除所有内容,那么最好删除名称空间并重新创建它。另一种方法是使用 kubectl api-resources获取所有资源类型,就像这里看到的:

kubectl delete "$(kubectl api-resources --namespaced=true --verbs=delete -o name | tr "\n" "," | sed -e 's/,$//')" --all

您还可以通过附加的标签来删除 Kubernetes 资源。例如,假设下面的标签附加到所有资源

metadata:
name: label-demo
labels:
env: dev
app: nginx

现在只需执行以下命令

deleting resources using app label
$ kubectl delete pods,rs,deploy,svc,cm,ing -l app=nginx


deleting resources using envirnoment label
$ kubectl delete pods,rs,deploy,svc,cm,ing -l env=dev

以防您想删除集群中的所有 K8S 资源。然后,最简单的方法是删除整个名称空间。

kubectl delete ns <name-space>
kubectl delete deploy,service,job,statefulset,pdb,networkpolicy,prometheusrule,cm,secret,ds -n namespace -l label

首先备份命名空间资源,然后删除通过 get all 命令找到的所有资源:

kubectl get all --namespace={your-namespace} -o yaml > {your-namespace}.yaml
kubectl delete -f {your-namespace}.yaml

尽管如此,您的集群中仍然存在一些资源。 去问问

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

如果您真的希望完全删除您的名称空间,请继续:

kubectl delete namespace {your-namespace}

(使用客户端 v1.23.1和服务器 v1.22.3进行测试)

也可以尝试 kubectl delete all --all --all-namespaces

all引用所有资源

--all引用所有资源,包括未初始化的资源

所有名称空间中的 --all-namespaces

Kubectl 删除所有 删除群集中的所有资源。 删除所有资源后,k8将再次启动集群的默认服务。