O que é uma vagem despejada?
Quando o disco ou o limite de memória de um nó é atingido, uma bandeira no nó Kubernetes é configurada para sinalizar que está sob carga. Essa bandeira também impede novas alocações neste nó, desencadeando um procedimento de despejo para liberar alguns recursos.
Este é o kubelet para o nó sub-pressão, que lidará com o processo de despejo. Este lidará com vagens com falha até que os recursos gastos do nó caem abaixo do limiar de despejo; nesse momento.
Se uma implantação é responsável pela vagem despejada, a implantação cria um novo pod para Kubernetes agendar.
Quando os pods serão despejados?
Esta distinção tem a ver com a forma como Kubernetes lida com pressão de recursos. Se os recursos do nó se tornarem escassos, os kubernetes devem despejar vagens, um processo é conhecido como despejo de pressão dos nó. O agendador de nós pode acomodar uma CPU totalmente ocupada; Portanto, o despejo não é necessário.
Deve despejar pods do nó e tentar colocá -los em outro nó se a memória for insuficiente. Isso é conhecido como despejo devido a restrições de memória. O despejo de pressão dos nó também pode ser causado pela falta de espaço em disco.
Que fatores os kubernetes consideram ao decidir quais pods despejar?
A pressão do nó é causada por pods sendo despejados com base em restrições de recursos, como memória ou espaço em disco, como mencionamos acima. Pods em um estado fracassado são os primeiros a serem despejados, pois não estão funcionando, mas ainda podem estar consumindo recursos. Kubernetes examina as vagens em execução.
Evitar o pod que usa mais memória não funcionará, porque provavelmente é um côs ativo que será difícil de implantar. Em vez disso, Kubernetes torna essa seleção com base em duas classes diferentes: QoS (qualidade do serviço) e prioridade.
O que se segue quando um pod é despejado?
Quando uma condição crítica é detectada, o Kubernetes realiza algumas tarefas domésticas (sim, interval de limpeza é o termo oficial para o intervalo de monitoramento de despejo) e despeja pods. Este procedimento "despeja" (termina) um pod e os recipientes que o construíram, mas não o próprio pod. Por padrão, Kubernetes não distingue entre vagens altamente críticas e nem de todo importante; Ele tem apenas um dever, que é recuperar recursos.
Cargas de trabalho gerenciadas por um recurso de carga de trabalho ou implantação produzirão automaticamente novos pods e removerão pods despejados.
Apesar do fato de as vagens despejadas terem sido encerradas e não devem mais consumir recursos do nó, eles permanecem - e Kubernetes continua a gerenciá -los. Com um número crescente de vagens despejadas, isso pode levar a um aumento no número de recursos necessários dentro da administração de Kubernetes.
Vamos agora tentar descobrir como encontrar uma vagem despejada e excluí -lo com sucesso. Existem alguns requisitos que devem ser atendidos inicialmente.
Pré -requisito
Para executar comandos para excluir pods despejados, primeiro, precisaremos configurar um cluster Minikube em nosso PC. Ubuntu 20.04 foi usado para implementar os comandos da exclusão de vagens despejadas neste tópico. Também podemos utilizar nosso sistema operacional preferido para isso, pois já temos o Kubectl instalado. Deve ser instalado antes que os comandos possam ser executados.
Agora, é hora de iniciar um terminal. Uma opção é usar a barra de aplicação do sistema operacional para alcançar o terminal. Outra maneira é usar o atalho do teclado “Ctrl + Alt + T.”Para iniciar um terminal, selecione uma dessas opções. Primeiro, devemos inicializar um cluster Minikube que foi implantado anteriormente no Ubuntu 20.04. Agora, lançaremos o Minikube digitando o seguinte comando no terminal. A saída relevante para a instrução abaixo mostrada é anexada aqui.
Como detectar uma vagem despejada?
Para descobrir o número exato de vagens que foram despejadas, execute o seguinte comando. Este comando exibe uma lista dos pods que foram despejados do seu sistema. A saída relevante para a instrução abaixo mostrada é anexada aqui.
Agora, vamos tentar uma forma diferente do mesmo comando. Adicionamos -c ao final do comando, como você pode ver. O restante da instrução é indistinguível daquele acima. Isso lhe dirá quantos pods foram despejados no total. Não há vagens despejadas em nosso cenário. Como resultado, como você pode ver na linha final da captura de tela em anexo, o comando retorna 0. A saída relevante para a instrução abaixo mostrada é anexada aqui.
Se o seu sistema tiver alguma vagem despejada, o comando acima produzirá o número, como 10, 3, 9 e assim por diante.
Como os pods despejados podem ser limpos manualmente?
Se você não quiser esperar o limiar de coleta de lixo ser atendido, você pode destruir as vagens manualmente com Kubectl. Em um tempo, um loop, cada vagem despejada identificada pode ser eliminada usando o comando dado acima.
Este comando pode ajudá -lo a limpar manualmente as vagens despejadas. A saída relevante para a instrução abaixo mostrada é anexada aqui.
Conclusão
Despejo é o procedimento de falhar deliberadamente um ou mais de uma cápsula em qualquer um dos nós com fome de recursos. Nós nos comunicamos sobre pods despejados neste tutorial. Também discutimos como excluir uma vagem despejada em etapas simples. Agora, você pode implementar o mesmo guia em seu sistema usando Kubectl e ver quantos vagens despejadas existem em seu sistema. Agora você pode listar todos eles e excluir os selecionados.