Kubectl Drening

Kubectl Drening
Os contêineres são efêmeros, pois todos que trabalharam com eles sabem. Não apenas recipientes e vagens, mas também os nós podem ser substituídos por Kubernetes. Os nós do Kubernetes são VMs, servidores e outras entidades computacionalmente poderosas, onde pods e contêineres executam. A tecnologia que permite que os usuários mudem perfeitamente todos os recipientes de um nó para outro é conhecido como drenagem de nó. Há uma variedade de aplicativos, como a manutenção do servidor, o K8S Cluster Auto Scaling, no qual os nós são adicionados dinamicamente e retirados. Instâncias preventáveis ​​ou spot são instâncias que podem ser interrompidas a qualquer momento.

Kubernetes pode detectar falhas no nó e remarcar vagens para outros nós automaticamente. A única questão é o tempo que leva para o nó cair e a vagem para ser remarcada. Vamos ver como você pode drenar um nó em Kubernetes. Mas primeiro, verifique se você está instalado em Kubectl no seu sistema. Para executar os comandos, você também precisará instalar o cluster Minikube e iniciar a janela do terminal. Você pode usar o minikube seguindo o comando abaixo mencionado.

Além disso, verifique se o seu servidor Kubernetes deve ser a versão 1.5 ou mais recente. Digite a "versão Kubectl" se você quiser verificar a versão. Você deve atender a certos requisitos para concluir com êxito esta tarefa. Você não precisa que seus aplicativos estejam disponíveis durante o dreno do nó, ou não precisa que eles estejam altamente disponíveis. Você aprendeu sobre o conceito de PodDisRuptionBudget e configurou o PodDisRuptionBudgets para os aplicativos que os exigem.

Configure um orçamento de interrupção, se desejado

Para garantir que suas cargas de trabalho estejam disponíveis durante a manutenção, crie um poddisruptionbing de poddisruption. Configure primeiro o poddisRuption bisbudgets e continue seguindo esse conselho se a disponibilidade for crucial para quaisquer aplicativos que possam ser executados no (s) nó (s) que você está drenando.

O uso do dreno Kubectl para remover/excluir um nó

Você pode usar o dreno de Kubectl para despejar todas as suas vagens antes de realizar manutenção em um nó, despejos seguros encerrar os recipientes da vagem de maneira arrumada enquanto fica dentro do poddisruption bisbudgets que você estabeleceu.

Kubectl Drening eventualmente ignora algumas vagens no nó que não são possíveis para serem destruídas por padrão. Portanto, é seguro desligar o nó desligando sua máquina física ou, se estiver funcionando em uma plataforma em nuvem, desinstalando sua máquina virtual. Para começar, identifique o nó que você deseja drenar pelo seu nome. O comando abaixo exibirá uma lista de todos os nós mencionados em seu cluster.

Em seguida, informe Kubernetes que o nó deve ser drenado:

Após o retorno do nó (e sem causar um erro), você pode desligá -lo (ou equivalente, se em uma plataforma em nuvem, exclua a máquina virtual que apóia o nó). Se você deixar um nó no cluster para manutenção, use o seguinte comando para dizer a Kubernetes que ele pode começar a reagendar novos pods no nó.

Drenando numerosos nós ao mesmo tempo

Apenas um nó deve receber a instrução de drenagem de Kubectl por vez. Você pode, no entanto, executar muitas instruções de drenagem de Kubectl simultaneamente, em vários terminais ou no fundo, para diferentes nós. Mesmo que numerosas instruções de drenagem estejam operando ao mesmo tempo, o poddisruptionbolg de deve ser observado.

Se você tiver um conjunto de estados com 3 réplicas e um bisbodes de poddisruption de 2, o dreno Kubectl removerá apenas uma vagem se todos esses pods estiverem prontos. Se você executar vários comandos de drenagem ao mesmo tempo, o Kubernetes honrará o bilheteiro de poddisrupção e garantirá que apenas um dreno seja executado.

Despejo em Kubernetes

Você pode usar a API de despejo para iniciar programaticamente despejos se não estiver disposto a usar o dreno Kubectl (por exemplo, para evitar a execução de um comando externo ou de ter um melhor controle ao longo do processo de despejo de pod).

Você deve primeiro estar familiarizado com os clientes da língua Kubernetes para usar a API. O sub-resistência de um pod pode ser considerado uma ação de exclusão no pod que é controlado por políticas. Para tentar um despejo, você publica uma tentativa de operação (ou tentar construir um despejo com mais precisão).

Despejos presos

A menos que você aja, um aplicativo pode se quebrar e a API de despejo sempre retornará 429 ou 500. Efeitos semelhantes também podem ser vistos se o último pod a ser despejado tiver um período de carência de longa terminação.

Existem duas opções nesta situação: abortar ou pausar a operação automática. Reinicie a automação após determinar a causa do aplicativo bloqueado. Em vez de usar a API de despejo, exclua o pod do plano de controle do seu cluster quando uma quantidade razoável de tempo passar.

Conclusão

Neste artigo, conversamos sobre o uso de Kubectl Drain. Vários comandos são explicados para ajudá -lo a entender o método de drenar em Kubernetes.