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.
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.
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.