Pessoal, segue um resumo breve de como usar o livess e rediness no nosso amado kubernetes

Live & Ready precisam ser funções independentes!

Para cada produto implantado em um contexto Kubernetes, 2 handlers que respondem em chamadas HTTP para “live” e “ready” devem ser implementados. A primeira prática recomendada com relação a esses testes é que cada handler precisa ter sua própria função implementada.Não desacople a lógica para “live” / “ready” de sua aplicação!Para o Kubernetes, é importante saber se o aplicativo de processamento está em execução ou não. Se a lógica para live / ready foi desacoplada em um novo processo, o resultado não é conclusivo.

Image for post
Image for post

Não implemente nenhuma lógica no handler “ready”. Ele precisa retornar o status 200 se a thread principal estiver em execução e 5xx se não estiver.Essa investigação permite que o Kubernetes saiba se o aplicativo está ativo ou morto. A decisão é tomada verificando o código de status de /.well-known/live e, se o aplicativo for declarado morto, o Kubernetes reiniciará o pod.

Image for post
Image for post

Readiness

Vamos imaginar que seu aplicativo leve um minuto para aquecer e iniciar. Seu serviço não funcionará até que esteja instalado e funcionando, mesmo que o processo tenha iniciado. Você também terá problemas se quiser expandir esta implantação para ter várias cópias. Uma nova cópia não deve receber tráfego até que esteja totalmente pronta, mas por padrão, o Kubernetes começa a enviar tráfego assim que o processo dentro do contêiner é iniciado. Usando uma readiness probe, o Kubernetes espera até que o aplicativo seja totalmente iniciado antes de permitir que o serviço envie tráfego para a nova cópia.

Image for post
Image for post

Liveness

Vamos imaginar outro cenário em que seu aplicativo tenha um caso desagradável de deadlock, fazendo com que ele trave indefinidamente e pare de atender às solicitações. Como o processo continua em execução, por padrão, o Kubernetes pensa que está tudo bem e continua a enviar solicitações ao pod quebrado. Usando uma liveness probe, o Kubernetes detecta que o aplicativo não está mais atendendo a solicitações e reinicia o pod ofensivo.

Image for post
Image for post

Para serem totalmente automatizados, os aplicativos nativos da nuvem devem ser altamente observáveis, fornecendo um meio para a plataforma de gerenciamento ler e interpretar a integridade do aplicativo e, se necessário, tomar ações corretivas. As verificações de integridade desempenham um papel fundamental na automação de atividades, como implantação, autocorreção, dimensionamento e outras. No entanto, também existem outros meios pelos quais seu aplicativo pode fornecer mais visibilidade sobre sua integridade. A importância do ter liveness e readness no kubernetes configurado corretamente esta totalmente ligada a disponibilidade da aplicação bem como o auto scaling que é uma das principais featues do kubertenes isso pode salvar sua aplicação em um pico de utulização.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store