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

时间:2017-11-06 01:41:48

标签: kubernetes

包括:

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

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

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

您还可以借助附加的标签删除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

答案 2 :(得分:3)

正如@ {Suresh Vishnoi所指出的那样,最好使用名称空间。如果未创建任何名称空间,则可能使用的是 default 名称空间。除了使用 yaml 文件之外,您还可以使用kubectl create namespace my-namespace创建名称空间。

如果要使用 kubectl delete 从当前名称空间中删除所有内容:

kubectl delete all --all

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

kubectl delete all --all -n {namespace}

您还可以删除名称空间。这将删除属于它的所有内容:

kubectl delete namespace {mynamespace}

答案 3 :(得分:-1)

如@victortv所建议的那样,删除和创建效果很好。这是一个小捷径:

export NAME=rwms3n  # change this
kubectl delete namespace $NAME && kubectl create namespace $NAME && kubectl delete namespace $NAME

输出:

namespace "rwms3n" deleted
namespace/rwms3n created
namespace "rwms3n" deleted

希望有帮助!