Deletar um StatefulSet

Esta tarefa mostra como deletar um StatefulSet.

Antes de você começar

  • Esta tarefa assume que você tem uma aplicação em execução no seu cluster representada por um StatefulSet.

Deletando um StatefulSet

Você pode deletar um StatefulSet da mesma forma que deleta outros recursos no Kubernetes: use o comando kubectl delete e especifique o StatefulSet pelo arquivo ou pelo nome.

kubectl delete -f <file.yaml>
kubectl delete statefulsets <statefulset-name>

Pode ser necessário deletar o serviço headless associado separadamente após o próprio StatefulSet ser deletado.

kubectl delete service <service-name>

Ao deletar um StatefulSet usando o kubectl, o StatefulSet é escalonado para 0. Todos os Pods que fazem parte dessa carga de trabalho também são deletados. Se você quiser deletar apenas o StatefulSet e não os Pods, use --cascade=orphan. Por exemplo:

kubectl delete -f <file.yaml> --cascade=orphan

Ao passar --cascade=orphan para o kubectl delete, os Pods gerenciados pelo StatefulSet permanecem mesmo após o objeto StatefulSet ser deletado. Se os Pods tiverem o rótulo app.kubernetes.io/name=MyApp, você pode deletá-los da seguinte forma:

kubectl delete pods -l app.kubernetes.io/name=MyApp

Volumes Persistentes

Deletar os Pods em um StatefulSet não deleta os volumes associados. Isso garante que você tenha a chance de copiar os dados do volume antes de deletá-lo. Deletar o PVC após os pods terem sido finalizados pode acionar a exclusão dos Volumes Persistentes de suporte, dependendo da classe de armazenamento e da política de retenção. Você nunca deve assumir que será possível acessar um volume após a exclusão da requisição (claim).

Exclusão completa de um StatefulSet

Para deletar tudo em um StatefulSet, incluindo os pods associados, você pode executar uma série de comandos semelhantes aos seguintes:

grace=$(kubectl get pods <stateful-set-pod> --template '{{.spec.terminationGracePeriodSeconds}}')
kubectl delete statefulset -l app.kubernetes.io/name=MyApp
sleep $grace
kubectl delete pvc -l app.kubernetes.io/name=MyApp

No exemplo acima, os Pods possuem o rótulo app.kubernetes.io/name=MyApp; substitua pelo seu próprio rótulo, conforme apropriado.

Forçar a exclusão de pods de um StatefulSet

Se você perceber que alguns pods no seu StatefulSet estão presos nos estados 'Terminating' ou 'Unknown' por um longo período de tempo, pode ser necessário intervir manualmente para forçar a exclusão dos pods do apiserver. Esta é uma tarefa potencialmente perigosa. Consulte Forçar a exclusão de pods de um StatefulSet para mais detalhes.

Próximos passos

Saiba mais sobre como forçar a exclusão de pods de um StatefulSet.

Última modificação June 15, 2025 at 8:24 AM PST: [pt-br] Add tasks/run-application/delete-stateful-set.md (ae1c3f8ab3)