O que causa esse problema?
Reconhecer a causa raiz desse problema é uma etapa crítica para corrigir este problema. Algumas razões pelas quais os pods podem ficar presos em um "estado de rescisão" inclui:
Razão # 1: Falta de recursos
As vagens de Kubernetes requerem quantidades adequadas de recursos para funcionar sem problemas. Se houver um número insuficiente de recursos, vários pods podem começar a competir entre si por recursos, o que, como resultado.
Razão # 2: Problemas com o próprio pod
Um problema com a configuração ou o código da vagem pode resultar em estar preso em um estado de término. Se houver finalizadores no pod, o problema da raiz pode ser que os finalizadores não sejam concluídos. Também pode ser o caso de o pod não estar respondendo ao sinal de terminação.
Razão # 3: Um nó subjacente pode ser quebrado
Sempre que as vagens de Kubernetes não saem da condição de terminação, o nó subjacente provavelmente está com defeito. Quando isso ocorre, os aplicativos também podem deixar de agendar, causando indisponibilidade. Isso pode se tornar um dreno financeiro para sua organização devido ao fato de que esse problema pode causar escala inútil. Pode ser um desafio para muitas equipes diagnosticar esse problema, porque as vagens de Kubernetes frequentemente terminam, dificultando dizer quais demoravam por muito tempo. Resolver esse problema é complexo porque a drenagem dos nó em Kubernetes deve ser configurada de uma maneira para trabalhar para o seu ambiente.
Se você vir no arquivo de configuração que todos os pods em um único nó estão no estado de "encerrar", então esse pode ser o problema.
Como consertar este problema?
As seguintes maneiras podem ajudá -lo a corrigir o problema facilmente.
Excluindo o pod
Primeiro, você precisará tentar excluir manualmente o pod, executando as seguintes etapas:
No entanto, há poucas chances de que a remoção manual da vagem do espaço para nome ajude a resolver o problema, mesmo se você dar o nome exato da vagem que deseja excluir.
Nesse caso, o problema pode ser que o pod não está terminando porque um certo processo não está reagindo a um sinal. Portanto, você precisará comandar o pod para ser removido com força usando o seguinte comando:
> kubectl delete pod [name_of_the_pod] --grace -period = 0 -force kubectl delete pod [name_of_the_pod] --gracePeriod = 0 ---force -n [name_of_the_namesace]Certifique -se de adicionar o nome do seu pod no comando, se estiver em um espaço de nome dedicado.
Removendo os finalizadores
Se a remoção da cápsula com força não funcionar, a questão principal pode estar com o próprio pod. Um problema comum com o POD é a incapacidade dos finalizadores a serem concluídos, o que pode ser a principal questão que está fazendo com que a vagem seja presa em um estado terminante. Então, você precisará primeiro verificar os finalizadores do pod, obtendo a configuração do pod:
> Kubectl Get Pod -n [namespace] -p [name_of_the_pod] -o yaml> /tmp /config_file.TXTEm seguida, pesquise nos metadados da seção Finalizadores. Se houver algum finalista, você precisará removê -los fazendo o seguinte:
> kubectl patch pod [name_of_the_pod] -p '"metadados": "finalizadores": null'Reinicie o Kubelet
Se as soluções mencionadas não resolverem esse problema, tente reiniciar o kubelet. No entanto, pode ser necessário envolver um administrador se não tiver permissão. Se você tiver acesso, reinicie o processo Kubelet, sshing no nó.
Como evitar os pods sendo presos no futuro?
Estas são algumas etapas que você pode tomar para garantir que esse problema não ocorra em primeiro lugar:
Conclusão
As questões que podem surgir como resultado de um pod sendo preso no estado terminante fazem valer a pena tomar medidas extras para garantir, antes de implantar, que não há problemas com o próprio pod, por exemplo, pode haver um problema Com a configuração do pod, o que provavelmente fará com que a vagem fique presa no estado terminante. Você também deve ter muito cuidado para evitar coisas que possam resultar nessa questão, como falta de recursos ou o cluster de Kubernetes, não está atualizado. Se esse problema ainda ocorrer, apesar de tomar as medidas necessárias para evitá -lo, a primeira coisa que precisará ser feita será identificar a causa raiz desse problema e usar uma solução de acordo.