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-namespaces
parece 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-system
espacio de nombres. En el ejemplo del mensaje, puedo ver el default
espacio de nombres. ¿Se kube-system
elimina 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.
ing
eliminar
Solo necesitas sed
hacer 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-namespaces
para obtener la lista de todos los pods en todos los espacios de nombres.--no-headers=true
opción para ocultar los encabezados.s
comando de sed
para buscar las dos primeras palabras, que representan namespace
y pod's name
respectivamente, luego ensamble el delete
comando usándolas.delete
de comandos es igual:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modificador de s
comando para ejecutar el comando ensamblado anteriormente, que hará los delete
trabajos reales .Para evitar eliminar pods en el kube-system
espacio de nombres, solo necesita agregar grep -v kube-system
para excluir kube-system
espacios de nombres antes del sed
comando.
--all-namespaces
si no desea eliminar los pods en el kube-system
espacio de nombres
Simplemente puedes correr
kubectl delete all --all --all-namespaces
El primero all
significa los tipos de recursos comunes (pods, conjuntos de réplicas, implementaciones, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
El segundo --all
medio es seleccionar todos los recursos de los tipos seleccionados.
Tenga en cuenta que all
no 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