Ao examinar os documentos, há uma chamada de API para excluir o pod 'a', mas existe uma maneira de eliminar todos os pods em todos os namespaces?
fonte
Ao examinar os documentos, há uma chamada de API para excluir o pod 'a', mas existe uma maneira de eliminar todos os pods em todos os namespaces?
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 odefault
espaço para nome. Foikube-system
excluído com o comando que você anexou?para se livrar deles também controladores de replicação traquinas.
fonte
ing
para ingressa também excluiVocê só precisa
sed
fazer isso: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 ofsed
para buscar as duas primeiras palavras, que representamnamespace
epod's name
respectivamente, e monte odelete
comando usando-as.delete
de comando é como:kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modificador des
comando para executar o comando montado acima, que fará osdelete
trabalhos reais .Para evitar excluir pods no
kube-system
espaço para nome, basta adicionargrep -v kube-system
para excluir okube-system
espaço para nome antes dosed
comando.fonte
--all-namespaces
se você não deseja excluir pods nokube-system
namespaceVocê pode simplesmente executar
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 selecionadosObserve que
all
não inclui:Para limpar perfeitamente,
fonte
Aqui está uma lista que pode ser estendida com grep para filtrar por nome.
fonte
fonte
Se você já possui pods recriados, pense em excluir todas as implantações primeiro
Apenas substitua NAMSPACE e DEPLOYMENT pelos correspondentes, você pode obter todas as informações de implantações usando o seguinte comando
fonte
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
Você pode verificar detalhes neste
fonte
Eu crio um código python para excluir tudo no namespace
delall.py
e depois
fonte
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
fonte