如何一次删除Kubernetes中的所有资源?

zujrkrfu  于 2023-03-29  发布在  Kubernetes
关注(0)|答案(8)|浏览(904)

包括:

  • 守护程序集
  • 部署
  • 工作机会
  • 吸引舱
  • 复本集
  • 复制控制器
  • 状态集
  • 服务项目
  • ...

如果有replicationcontroller,当删除一些部署时,它们会重新生成。有办法让kubenetes回到初始化状态吗?

omjgkv6w

omjgkv6w1#

方法一:使用kubectl delete删除当前命名空间(通常是 default 命名空间)中的所有内容:

kubectl delete all --all

all指的是所有资源类型,如pod、deployments、services等。--all用于删除该资源类型的每个对象,而不是使用其名称或标签来指定它。
要删除某个命名空间中的所有内容,可以使用-n标志:

kubectl delete all --all -n {namespace}

方法二:您也可以删除命名空间并重新创建它。这将删除属于它的所有内容:

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

备注(谢谢@Marcus):kubernetes does not refers to every kubernetes object中的all,比如管理级资源(限制、配额、策略、授权规则)。如果你真的想确保删除所有东西,最好删除命名空间并重新创建它。另一种方法是使用kubectl api-resources获取所有资源类型,as seen here

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

xu3bshqb2#

Kubernetes Namespace将是您的完美选择。您可以轻松创建命名空间资源。
kubectl create -f custom-namespace.yaml

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

现在您可以在该自定义名称空间中部署所有其他资源(Deployment、ReplicaSet、Services等)。
如果你想删除所有这些资源,你只需要删除自定义命名空间。删除自定义命名空间,所有其他资源将被删除。没有它,ReplicaSet可能会在删除现有Pod时创建新的Pod。
要使用Namespace,您需要在k8s命令中添加--namespace标志。
例如:
kubectl create -f deployment.yaml --namespace=custom-namespace
您可以在custom-namespace中列出所有Pod。
kubectl get pods --namespace=custom-namespace

jtw3ybtb

jtw3ybtb3#

您也可以通过附加到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
mlnl4t2r

mlnl4t2r4#

也可以试试kubectl delete all --all --all-namespaces
all指的是所有资源
--all引用所有资源,包括未初始化的资源
所有命名空间中的--all-namespaces

警告:同时也会删除kube-system pod,请谨慎使用

rjjhvcjd

rjjhvcjd5#

首先备份命名空间资源,然后使用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测试)

omvjsjqw

omvjsjqw6#

如果你想删除集群中的所有K8S资源,那么最简单的方法就是删除整个命名空间。

kubectl delete ns <name-space>
cpjpxq1n

cpjpxq1n7#

kubectl delete deploy,service,job,statefulset,pdb,networkpolicy,prometheusrule,cm,secret,ds -n namespace -l label
iqih9akk

iqih9akk8#

kubectl delete all --all删除集群中的所有资源。删除所有资源后,k8将重新启动集群的默认服务。

相关问题