Respostas:
Não há comando para fazer exatamente o que você pediu.
Aqui estão algumas correspondências.
Você pode excluir todos os pods em um único espaço para nome com este comando:
kubectl delete --all pods --namespace=foo
Você também pode excluir todas as implantações no espaço para nome, o que excluirá todos os pods anexados às implantações correspondentes ao espaço para nome
kubectl delete --all deployments --namespace=foo
Você pode excluir todos os espaços para nome e todos os objetos em todos os espaços para nome (mas não objetos sem espaço para nome, como nós e alguns eventos) com este comando:
kubectl delete --all namespaces
No entanto, o último comando provavelmente não é algo que você deseja fazer, pois excluirá coisas no espaço de nomes do sistema kube, o que tornará seu cluster inutilizável.
Este comando excluirá todos os namespaces, exceto o kube-system, que pode 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
às vezes parece funcionar (não sei ao certo o que faz com que ele funcione em alguns ambientes e não em outros). Funciona bem no meu host bastião, mas não no laptop. Ambos executando debian e ambas com a mesma versão de kubectl (aglomerado versão 1.13)
kube-system
espaço para nome. No exemplo da mensagem, eu posso ver o default
espaço para nome. Foi kube-system
excluído com o comando que você anexou?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
para se livrar deles também controladores de replicação traquinas.
ing
para ingressa também exclui
Você só precisa sed
fazer isso:
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 obter a lista de todos os pods em todos os namespaces.--no-headers=true
opção para ocultar os cabeçalhos.s
command of sed
para buscar as duas primeiras palavras, que representam namespace
e pod's name
respectivamente, e monte o delete
comando usando-as.delete
de comando é como:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modificador de s
comando para executar o comando montado acima, que fará os delete
trabalhos reais .Para evitar excluir pods no kube-system
espaço para nome, basta adicionar grep -v kube-system
para excluir o kube-system
espaço para nome antes do sed
comando.
--all-namespaces
se você não deseja excluir pods no kube-system
namespace
Você pode simplesmente executar
kubectl delete all --all --all-namespaces
O primeiro all
significa os tipos de recursos comuns (pods, replicasets, implantações, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
O segundo --all
significa selecionar todos os recursos dos tipos selecionados
Observe que all
não inclui:
Para limpar perfeitamente,
Aqui está uma lista que pode ser estendida com grep para filtrar por nome.
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
Se você já possui pods recriados, pense em excluir todas as implantações primeiro
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Apenas substitua NAMSPACE e DEPLOYMENT pelos correspondentes, você pode obter todas as informações de implantações usando o seguinte comando
kubectl get deployments --all-namespaces
O plug-in Kubectl bulk (ação em massa no krew) pode ser útil para você, pois fornece operações em massa nos recursos selecionados. Este é o comando para excluir pods
' kubectl bulk pods -n namespace delete '
Você pode verificar detalhes neste
Eu crio um código python para excluir tudo no namespace
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")
e depois
kubectl get all -n kong -o json | python delall.py
O K8s funciona completamente no fundamental do espaço para nome. se você deseja liberar todo o recurso relacionado ao espaço para nome especificado.
você pode usar o abaixo mencionado:
excluir espaço para nome kubectl k8sdemo-app