Partilhar via


Configurar as pesquisas liveness

Os aplicativos em contêineres podem ser executados por longos períodos de tempo, resultando em estados quebrados que podem precisar ser reparados reiniciando o contêiner. As Instâncias de Contêiner do Azure dão suporte a testes de vivacidade para que você possa configurar seus contêineres dentro do grupo de contêineres para reiniciar se a funcionalidade crítica não estiver funcionando. A sonda de vivacidade comporta-se como uma sonda de vivacidade do Kubernetes.

Este artigo explica como implantar um grupo de contêineres que inclui uma sonda de vivacidade, demonstrando a reinicialização automática de um contêiner não íntegro simulado.

As Instâncias de Contêiner do Azure também dão suporte a testes de preparação, que você pode configurar para garantir que o tráfego chegue a um contêiner somente quando ele estiver pronto para ele.

Implantação do YAML

Crie um liveness-probe.yaml arquivo com o seguinte trecho. Esse arquivo define um grupo de contêineres que consiste em um contêiner NGINX que eventualmente se torna não íntegro.

apiVersion: 2019-12-01
location: eastus
name: livenesstest
properties:
  containers:
  - name: mycontainer
    properties:
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      command:
        - "/bin/sh"
        - "-c"
        - "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      livenessProbe:
        exec:
            command:
                - "cat"
                - "/tmp/healthy"
        periodSeconds: 5
  osType: Linux
  restartPolicy: Always
tags: null
type: Microsoft.ContainerInstance/containerGroups

Execute o seguinte comando para implantar esse grupo de contêineres com a configuração YAML anterior:

az container create --resource-group myResourceGroup --name livenesstest -f liveness-probe.yaml

Comando Iniciar

A implantação inclui uma command propriedade que define um comando inicial que é executado quando o contêiner começa a ser executado pela primeira vez. Esta propriedade aceita uma matriz de cadeias de caracteres. Este comando simula o contêiner entrando em um estado não íntegro.

Primeiro, ele inicia uma sessão bash e cria um arquivo chamado healthy dentro do /tmp diretório. Em seguida, ele dorme por 30 segundos antes de excluir o arquivo e, em seguida, entra em uma suspensão de 10 minutos:

/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"

Comando Liveness

Essa implantação define um livenessProbe que suporta um exec comando liveness que atua como a verificação de liveness. Se esse comando sair com um valor diferente de zero, o contêiner será morto e reiniciado, sinalizando que o healthy arquivo não pôde ser encontrado. Se este comando for encerrado com êxito com o código de saída 0, nenhuma ação será executada.

A periodSeconds propriedade designa o comando liveness deve ser executado a cada 5 segundos.

Verificar a saída de vivacidade

Nos primeiros 30 segundos, o healthy arquivo criado pelo comando start existe. Quando o comando liveness verifica a existência do healthy arquivo, o código de status retorna 0, sinalizando sucesso, para que nenhuma reinicialização ocorra.

Após 30 segundos, o cat /tmp/healthy comando começa a falhar, causando eventos insalubres e matadores.

Esses eventos podem ser exibidos no portal do Azure ou na CLI do Azure.

Evento insalubre do portal

Ao exibir os eventos no portal do Azure, os eventos do tipo Unhealthy são acionados após a falha do comando liveness. O evento subsequente é do tipo Killing, significando uma exclusão de contêiner para que uma reinicialização possa começar. A contagem de reinicialização para o contêiner aumenta cada vez que esse evento ocorre.

As reinicializações são concluídas in-loco para que recursos como endereços IP públicos e conteúdo específico do nó sejam preservados.

Contador de reinicialização do portal

Se a sonda de vivacidade falhar continuamente e acionar muitas reinicializações, seu contêiner entrará em um atraso exponencial de back-off.

Sondas Liveness e políticas de reinicialização

As políticas de reinicialização substituem o comportamento de reinicialização acionado por testes de animação. Por exemplo, se você definir uma sonda de restartPolicy = Never vivacidade, o grupo de contêineres não será reiniciado devido a uma falha na verificação de vivacidade. Em vez disso, o grupo de contêineres adere à política de reinicialização do grupo de contêineres de Never.

Próximos passos

Cenários baseados em tarefas podem exigir uma sonda de vivacidade para habilitar reinicializações automáticas se uma função de pré-requisito não estiver funcionando corretamente. Para obter mais informações sobre como executar contêineres baseados em tarefas, consulte Executar tarefas em contêineres em instâncias de contêiner do Azure.