Sondas de inicialização de Kubernetes

Sondas de inicialização de Kubernetes

Este artigo se concentra em sondas de inicialização. O papel da sonda de inicialização pode impedir outras sondas sequencialmente. É essencial usar adicionalmente as sondas de inicialização juntamente com as sondas de lactive e prontidão. A carga de trabalho não pode ser modificada pela sonda de inicialização por conta própria. Neste artigo, você revisará como o Kubernetes avalia o status de saúde do aplicativo por meio de sondas de inicialização e configurar as verificações de saúde usando sondas de inicialização.

O que são sondas Kubernetes?

As sondas também são chamadas de verificações de saúde, que são a técnica para os aplicativos Kubernetes para fornecer monitoramento do estado interno do aplicativo usando informações. Eles permitem que seu cluster identifique as vagens em execução (contêineres) que monitoram a saúde de um aplicativo e garantem que apenas as vagens saudáveis ​​sirvam ao tráfego.

Os aplicativos podem se tornar não confiáveis ​​por vários motivos, como perda de conexão temporária, erros de configuração e erros de aplicativo. Os desenvolvedores monitoram sua saúde de aplicativos usando sondas. As sondas ajudam os desenvolvedores a conhecer o status do aplicativo, a utilização de recursos e os bugs. É fácil corrigir os problemas de aplicativos, gerenciamento de recursos e organização de recursos efetivamente, monitorando as informações do aplicativo.

As sondas são usadas para detectar o seguinte:

    • Contêineres que ainda não progrediram e não podem servir o tráfego.
    • Contêineres que estão sobrecarregados e não podem servir o tráfego suplementar.
    • Contêineres que estão completamente mortos e não servem a nenhum tráfego.

Quais são os tipos de sondas Kubernetes?

Existem três tipos de sondas Kubernetes. Esses incluem:

Sondas de Lividade

É responsável reiniciar o contêiner se ele detectar um impasse e não responder.

Sondas de prontidão

É considerado um guardião de portas para o tráfego de entrada. Esta investigação é responsável por dizer que este pod está pronto para receber o tráfego.

Sondas de inicialização

É responsável pelo aplicativo que é implantado dentro do contêiner. Indica se o aplicativo começou com sucesso.

O que é uma sonda de inicialização?

Kubernetes pode determinar se o seu software, que é executado em um contêiner dentro de uma vagem, começou a usar adequadamente as sondas de inicialização.

Como você pode ver na figura a seguir, o aplicativo dentro da vagem

Pontos -chave das sondas de inicialização

    • Para o aplicativo, proteja o recipiente de partida lenta com a ajuda de uma sonda de inicialização que passa por mais tempo para iniciar.
    • Desative as sondas de lutividade e prontidão através da sonda de inicialização quando o tempo de início do aplicativo exceder.
    • A sonda de inicialização fornece um mecanismo para carregar dados grandes, configurar e migrar os arquivos.

Pré -requisitos para criar a sonda de inicialização

Antes de trabalhar com a investigação de inicialização, os pré-requisitos são um cluster de Kubernetes com dois nós que não estão agindo como hosts e software de linha de comando kubectl que deve ser configurado para se comunicar entre clusters. Se você não criou um cluster, pode usar o minikube para criar um cluster. Existem outras opções de playground do Kubernetes que estão disponíveis online que você pode usar para criar um cluster.

Existem quatro técnicas básicas de Kubernetes que são suportadas por sondas de inicialização:

EXEC: Executa um comando dentro do contêiner. O código zero indica sucesso e os outros códigos indicam falha.

Http: Verifique a saúde do aplicativo usando o comando get request. A sonda HTTP é considerada saudável se sua resposta estiver dentro do intervalo de [200-399]. Se o seu aplicativo não suportar um servidor HTTP, crie seu servidor HTTP dentro do seu aplicativo e responda à sonda de LIVRE.

TCP: Kubernetes abre a conexão entre uma porta TCP específica e um contêiner. Se a conexão for bem -sucedida, aceita o tráfego. Caso contrário, ele não cria uma conexão. A porta TCP funciona em nome de sondas HTTP quando a sonda HTTP não consegue trabalhar.

GRPC: Determina se a sonda é bem -sucedida enviando uma solicitação de verificação de saúde GRPC para uma porta dentro do contêiner e usando a resposta.

O critério de sucesso para a sonda e com que frequência é verificado são controlados por algumas variáveis ​​fundamentais:

InitialDelaysaySeconds: Especifica a quantidade de tempo que deve passar entre o tempo em que o contêiner inicia e a primeira vez que a sonda é usada (padrão: 0, mínimo: 0).

segundos de períodos: Define com que frequência a sonda é verificada após o atraso inicial (padrão: 10, mínimo: 1).

TimeoutSegunds: Indica quanto tempo aguardar a conclusão da sonda e é marcada como falhada após o tempo excedido (padrão: 1, mínimo: 1).

FailureThreshold: Kubernetes requer o fracasso mínimo de sucesso para que a sonda seja considerada prejudicial se tiver sucesso. O contêiner é reiniciado apenas quando as repetições não são saudáveis ​​(padrão: 3, mínimo: 1).

Como criar uma sonda de inicialização

As sondas de inicialização são feitas adicionando uma disciplina StartupProbe dentro da especificação.Recipientes parte da vagem é distinta. A abordagem EXEC é usada no exemplo de sonda de inicialização direta que é mostrado no seguinte onde o comando é executado dentro do contêiner:


Caminho:/Healthz é o ponto final da saúde do Applicexample-Startup-Probation. O FailureThreshold: 12 é o Kubernetes tenta, caso a sonda falhe. Os segundos de períodos: 12 é a frequência com que a inspeção é realizada.

Usando Kubectl, adicione o pod ao seu cluster com o seguinte comando:

> kubectl Aplicar -f Startup-soprBe-Exemplo.yml


O recipiente começa e funciona normalmente. Você pode validar isso por seus detalhes que são exibidos em Kubectl:

Como proteger os recipientes de partida lenta com sondas de inicialização?

Através da fórmula a seguir, você pode encontrar o tempo suficiente para cobrir o horário de inicialização do pior caso:

> FailureThreshold * Segundo de Períodos



O tempo de partida máximo para o aplicativo é de 3 minutos (20 * 10 = 200). Uma vez que a investigação de inicialização é bem -sucedida pela primeira vez, a sonda de LIGNIGHT Prosse para oferecer uma resposta rápida aos impasses de contêineres. O contêiner é encerrado após 200 segundos e está sujeito à coluna de reinicialização da vagem se a sonda de inicialização nunca for bem -sucedida.

Conclusão

As sondas de Lividade, prontidão e startup para seus recipientes que são implantados sob recipientes de Kubernetes devem ser configurados adequadamente se você quiser manter um cluster de Kubernetes saudável. Este post concentrou -se na sonda de inicialização, o que é crucial, pois permite que seus contêineres notifiquem os Kubernetes quando eles iniciam e estão preparados para serem avaliados quanto à vivenda e prontidão. É bom adicionar uma sonda de inicialização quando você estiver usando sondas de lactive e prontidão. Caso contrário, o contêiner pode ser reiniciado antes de terminar de inicializar. Este artigo implementa a configuração básica da sonda de inicialização e descreve os parâmetros que podem ser usados ​​por sondas.