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

onl*_*ine 19 kubernetes

包括:

  • 守护进程集
  • 部署
  • 工作
  • 副本集
  • 复制控制器
  • 有状态集
  • 服务
  • ...

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

小智 26

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

all指所有资源

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

--all-namespaces在所有所有命名空间中

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

  • 这就像一颗核弹,很容易使您的集群变得毫无用处,因为它会删除 Kubernetes 本身运行所需的“kube-system”命名空间。 (9认同)
  • 尽管它具有破坏性,但在我看来,它确实最好地回答了最初的问题。 (5认同)

vic*_*rtv 21

方法1:使用以下命令从当前名称空间(通常是默认名称空间)中删除所有内容kubectl delete

kubectl delete all --all
Run Code Online (Sandbox Code Playgroud)

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

要从某个命名空间中删除所有内容,请使用-n标志:

kubectl delete all --all -n {namespace}
Run Code Online (Sandbox Code Playgroud)

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

kubectl delete namespace {namespace}
kubectl create namespace {namespace}
Run Code Online (Sandbox Code Playgroud)

注意(感谢@Marcus):all在kubernetes中并没有引用每个kubernetes对象,例如管理员级别的资源(限制,配额,策略,授权规则)。如果您确实要确保删除删除,最好删除命名空间并重新创建它。这样做的另一种方法是使用kubectl api-resources获取所有资源类型,如下所示

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

  • 我使用了“kubectl delete all --all”,发现它有助于删除我的 pod、服务、statefulsets 等。为了清楚起见,似乎有很多东西不会删除,包括 storageClasses、perpetualVolumes、perpetitiveVolumeClaims,当然还有节点。 (8认同)
  • 这不会删除 `RoleBindings`、`ServiceAccounts` 或 `NetworkPolicy` (4认同)

Sur*_*noi 12

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

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

现在,您可以在该自定义命名空间中部署所有其他资源(部署,副本集,服务等).

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

要使用Namespace,需要在k8s命令中添加--namespace标志.

例如

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

您可以列出custom-namespace中的所有pod.

kubectl get pods --namespace=custom-namespace


Dan*_*Dan 12

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

metadata:
  name: label-demo
  labels:
    env: dev
    app: nginx
Run Code Online (Sandbox Code Playgroud)

现在只需执行以下命令

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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您还可以删除所有资源。`kubectl 删除所有 -l env=dev` (6认同)
  • 它只会删除部署、pod、rs 和 svc。 (2认同)

Xos*_*s73 7

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

kubectl get all --namespace={your-namespace} -o yaml > {your-namespace}.yaml
kubectl delete -f {your-namespace}.yaml
Run Code Online (Sandbox Code Playgroud)

尽管如此,您的集群中仍然存在一些资源。检查与

kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found --namespace {your-namespace}
Run Code Online (Sandbox Code Playgroud)

如果您确实想完全删除您的命名空间,请继续:

kubectl delete namespace {your-namespace}
Run Code Online (Sandbox Code Playgroud)

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