Código indicando que o contêiner sai anormalmente
Quando um contêiner não é iniciado ou encerrado, o código de saída é registrado pelos eventos do Kubernetes para relatar a causa. Esta seção descreve como localizar falhas usando um código de saída.
Exibir um código de saída
Você pode usar o kubectl para se conectar ao cluster e executar o seguinte comando para verificar o pod:
kubectl describe pod {pod name} Containers:
container-1:
Container ID: ...
Image: ...
Image ID: ...
Ports: ...
Host Ports: ...
Args: ...
State: Running
Started: Sat, 28 Jan 2023 09:06:53 +0000
Last State: Terminated
Reason: Error
Exit Code: 255
Started: Sat, 28 Jan 2023 09:01:33 +0000
Finished: Sat, 28 Jan 2023 09:05:11 +0000
Ready: True
Restart Count: 1 Códigos de saída
Os códigos de saída variam de 0 a 255.
- Se o código de saída for 0, o contêiner sairá normalmente.
- Geralmente, a saída anormal é causada pelo programa e esses códigos de saída variam de 1 a 128. Em cenários especiais, o código de saída varia de 129 a 255.
- Quando um programa sai devido a interrupções externas, o código de saída varia de 129 a 255. Quando o sistema operacional envia um sinal de interrupção para o programa, o código existe é o valor do sinal de interrupção mais 128. Por exemplo, se o valor do sinal de interrupção do SIGKILL for 9, o código de status de saída será 137 (9 + 128).
- Se o código existente não estiver no intervalo de 0 a 255, por exemplo, exit(-1), o código de saída será automaticamente convertido em um valor que esteja dentro do intervalo de 0 a 255.
Se o código existente for um número positivo, a fórmula de conversão será a seguinte:
code % 256
Se o código de saída for um número negativo, a fórmula de conversão será a seguinte:
256 - (|code| % 256)
Para obter detalhes, consulte Códigos de saída com significados especiais.
Códigos comuns de saída
Código de saída | Nome | Descrição |
|---|---|---|
0 | Normal exit. | O contêiner sai normalmente. Esse código de status não indica necessariamente que ocorre uma exceção. Quando não há processo no recipiente, 0 também pode ocorrer. |
1 | Common program error. | Existem muitas causas para esta exceção, a maioria das quais são causadas por programas. Você precisa localizar ainda mais a causa com base nos logs do contêiner. |
125 | The container is not running. | As possíveis causas são as seguintes:
|
126 | Command calling error. | O comando chamado na imagem não pode ser executado. Por exemplo, a permissão de arquivo é insuficiente ou o arquivo não pode ser executado. |
127 | The file or directory cannot be found. | O arquivo ou diretório especificado na imagem não pode ser encontrado. |
137 | Immediate termination (SIGKILL) | O programa é encerrado pelo sinal SIGKILL. As causas comuns são as seguintes:
|
139 | Segmentation error (SIGSEGV) | O contêiner recebe o sinal SIGSEGV do sistema operacional porque o contêiner tenta acessar um local de memória não autorizado. |
143 | Graceful termination (SIGTERM) | O contêiner é encerrado corretamente de acordo com a indicação do host. Em geral, esse código de saída não requer solução de problemas. |
255 | The exit code is out of range. | O código de saída do contentor está fora do alcance. Por exemplo, exit(-1) pode ser usado para saída anormal, e -1 é automaticamente convertido para 255. Mais solução de problemas é necessária. |
Sinal de interrupção padrão do Linux
Você pode executar o comando kill -l para visualizar os sinais e valores correspondentes no sistema operacional Linux.
Sinal | Valor | Ação | Descrição |
|---|---|---|---|
SIGHUP | 1 | Term | Enviado quando a conexão do terminal do usuário (normal ou anormal) termina. |
SIGINT | 2 | Term | Sinal de término do programa, que é enviado pelo terminal pressionando Ctrl+C. |
SIGQUIT | 3 | Core | Semelhante ao SIGINT, o comando de saída é enviado pelo terminal. Geralmente, o comando de saída é controlado pressionando Ctrl+\. |
SIGILL | 4 | Core | Instrução inválida, geralmente porque ocorre um erro no arquivo executável. |
SIGABRT | 6 | Core | Sinal gerado quando a função abortar é invocada. O processo termina de forma anormal. |
SIGFPE | 8 | Core | Ocorre um erro aritmético de ponto flutuante. Outros erros aritméticos como o divisor 0 também ocorrem. |
SIGKILL | 9 | Term | Encerre qualquer processo. |
SIGSEGV | 11 | Core | Tentativa de acessar um local de memória não autorizado. |
SIGPIPE | 13 | Term | O tubo está desconectado. |
SIGALRM | 14 | Term | Indicar o tempo do relógio. |
SIGTERM | 15 | Term | Sinal final do processo, que geralmente é a saída normal do programa. |
SIGUSR1 | 10 | Term | Este é um sinal definido pelo usuário em aplicações. |
SIGUSR2 | 12 | Term | Este é um sinal definido pelo usuário em aplicações. |
SIGCHLD | 17 | Ign | Este sinal é gerado quando um subprocesso termina ou é interrompido. |
SIGCONT | 18 | Cont | Retomar um processo interrompido. |
SIGSTOP | 19 | Stop | Suspender a execução de um processo. |
SIGTSTP | 20 | Stop | Parar um processo. |
SIGTTIN | 21 | Stop | O processo em segundo plano lê o valor de entrada do terminal. |
SIGTTOU | 22 | Stop | O processo em segundo plano lê o valor de saída do terminal. |

