Respuestas:
No hay un comando para hacer exactamente lo que le pediste.
Aquí hay algunos partidos cercanos.
Puede eliminar todos los pods en un solo espacio de nombres con este comando:
kubectl delete --all pods --namespace=foo
También puede eliminar todas las implementaciones en el espacio de nombres, lo que eliminará todos los pods adjuntos con las implementaciones correspondientes al espacio de nombres
kubectl delete --all deployments --namespace=foo
Puede eliminar todos los espacios de nombres y todos los objetos en cada espacio de nombres (pero no los objetos sin espacios de nombres, como los nodos y algunos eventos) con este comando:
kubectl delete --all namespaces
Sin embargo, el último comando probablemente no sea algo que desee hacer, ya que eliminará cosas en el espacio de nombres del sistema kube, lo que hará que su clúster no sea utilizable.
Este comando eliminará todos los espacios de nombres, excepto kube-system, que puede ser útil:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
kubectl delete ns $each
done
kubectl delete pods --all --all-namespacesparece funcionar a veces (no estoy seguro de qué lo hace funcionar en algunos entornos y no en otros). Funciona bien desde mi servidor bastión pero no desde la computadora portátil. Ambos ejecutan Debian y ambos ejecutan la misma versión de Kubectl (versión de clúster 1.13)
kube-systemespacio de nombres. En el ejemplo del mensaje, puedo ver el defaultespacio de nombres. ¿Se kube-systemelimina con el comando que ha adjuntado?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
para deshacerse de los molestos controladores de replicación también.
ingeliminar
Solo necesitas sedhacer esto:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
Explica:
kubectl get pods --all-namespacespara obtener la lista de todos los pods en todos los espacios de nombres.--no-headers=trueopción para ocultar los encabezados.scomando de sedpara buscar las dos primeras palabras, que representan namespacey pod's namerespectivamente, luego ensamble el deletecomando usándolas.deletede comandos es igual:
kubectl --namespace kube-system delete pod heapster-eq3yw.emodificador de scomando para ejecutar el comando ensamblado anteriormente, que hará los deletetrabajos reales .Para evitar eliminar pods en el kube-systemespacio de nombres, solo necesita agregar grep -v kube-systempara excluir kube-systemespacios de nombres antes del sedcomando.
--all-namespacessi no desea eliminar los pods en el kube-systemespacio de nombres
Simplemente puedes correr
kubectl delete all --all --all-namespaces
El primero allsignifica los tipos de recursos comunes (pods, conjuntos de réplicas, implementaciones, ...)
kubectl get all == kubectl get pods,rs,deployments, ...El segundo --allmedio es seleccionar todos los recursos de los tipos seleccionados.
Tenga en cuenta que allno incluye:
Para limpiar perfectamente,
Aquí hay una línea que se puede extender con grep para filtrar por nombre.
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
Si ya tiene pods que se recrean, piense en eliminar primero todas las implementaciones
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Simplemente reemplace el NAMSPACE y el DESPLIEGUE por los correspondientes, puede obtener toda la información de despliegues con el siguiente comando
kubectl get deployments --all-namespaces
El complemento Kubectl bulk (acción masiva en Krew) puede ser útil para usted, ya que le brinda operaciones masivas en recursos seleccionados. Este es el comando para eliminar pods
' kubectl bulk pods -n namespace delete '
Puedes consultar los detalles en este
Creo un código de Python para eliminar todo en el espacio de nombres
delall.py
import json,sys,os;
obj=json.load(sys.stdin);
for item in obj["items"]:
os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")
y entonces
kubectl get all -n kong -o json | python delall.py
K8s funciona completamente en lo fundamental del espacio de nombres. si desea liberar todos los recursos relacionados con el espacio de nombres especificado.
puede usar lo siguiente:
kubectl eliminar el espacio de nombres k8sdemo-app