包括:
如果有replicationcontroller,当删除一些部署时,它们将重新生成。有没有办法让kubenetes回到初始化状态?
答案 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
希望有帮助!