包括:
如果有replicationcontroller,当删除一些部署时,它们会重新生成。有办法让kubenetes回到初始化状态吗?
omjgkv6w1#
方法一:使用kubectl delete删除当前命名空间(通常是 default 命名空间)中的所有内容:
kubectl delete
kubectl delete all --all
all指的是所有资源类型,如pod、deployments、services等。--all用于删除该资源类型的每个对象,而不是使用其名称或标签来指定它。要删除某个命名空间中的所有内容,可以使用-n标志:
all
--all
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 api-resources
kubectl delete "$(kubectl api-resources --namespaced=true --verbs=delete -o name | tr "\n" "," | sed -e 's/,$//')" --all
xu3bshqb2#
Kubernetes Namespace将是您的完美选择。您可以轻松创建命名空间资源。kubectl create -f custom-namespace.yaml
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
kubectl create -f deployment.yaml --namespace=custom-namespace
kubectl get pods --namespace=custom-namespace
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
mlnl4t2r4#
也可以试试kubectl delete all --all --all-namespacesall指的是所有资源--all引用所有资源,包括未初始化的资源所有命名空间中的--all-namespaces
kubectl delete all --all --all-namespaces
--all-namespaces
警告:同时也会删除kube-system pod,请谨慎使用
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测试)
omvjsjqw6#
如果你想删除集群中的所有K8S资源,那么最简单的方法就是删除整个命名空间。
kubectl delete ns <name-space>
cpjpxq1n7#
kubectl delete deploy,service,job,statefulset,pdb,networkpolicy,prometheusrule,cm,secret,ds -n namespace -l label
iqih9akk8#
kubectl delete all --all删除集群中的所有资源。删除所有资源后,k8将重新启动集群的默认服务。
8条答案
按热度按时间omjgkv6w1#
方法一:使用
kubectl delete
删除当前命名空间(通常是 default 命名空间)中的所有内容:all
指的是所有资源类型,如pod、deployments、services等。--all
用于删除该资源类型的每个对象,而不是使用其名称或标签来指定它。要删除某个命名空间中的所有内容,可以使用-n标志:
方法二:您也可以删除命名空间并重新创建它。这将删除属于它的所有内容:
备注(谢谢@Marcus):kubernetes does not refers to every kubernetes object中的
all
,比如管理级资源(限制、配额、策略、授权规则)。如果你真的想确保删除所有东西,最好删除命名空间并重新创建它。另一种方法是使用kubectl api-resources
获取所有资源类型,as seen here:xu3bshqb2#
Kubernetes Namespace将是您的完美选择。您可以轻松创建命名空间资源。
kubectl create -f custom-namespace.yaml
现在您可以在该自定义名称空间中部署所有其他资源(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
jtw3ybtb3#
您也可以通过附加到Kubernetes资源的标签来删除它。例如,假设下面的标签附加到所有资源
现在只需执行以下命令
mlnl4t2r4#
也可以试试
kubectl delete all --all --all-namespaces
all
指的是所有资源--all
引用所有资源,包括未初始化的资源所有命名空间中的
--all-namespaces
警告:同时也会删除kube-system pod,请谨慎使用
rjjhvcjd5#
首先备份命名空间资源,然后使用get all命令删除找到的所有资源:
尽管如此,您的群集中仍存在一些资源。
如果你真的想完全删除你的命名空间,继续:
(使用客户端v1.23.1和服务器v1.22.3测试)
omvjsjqw6#
如果你想删除集群中的所有K8S资源,那么最简单的方法就是删除整个命名空间。
cpjpxq1n7#
iqih9akk8#
kubectl delete all --all删除集群中的所有资源。删除所有资源后,k8将重新启动集群的默认服务。