Este guia ajuda você a diagnosticar e resolver os problemas mais comuns ao implantar ou operar o Midaz no Kubernetes com Helm. Cada seção cobre um sintoma específico, os comandos de diagnóstico para investigá-lo e os passos para resolvê-lo.Documentation Index
Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
Use this file to discover all available pages before exploring further.
Comandos gerais de diagnóstico
Comece com estes comandos para obter uma visão geral do estado do seu deployment antes de mergulhar em problemas específicos.
Pods travados em Pending
Sintoma: Um ou mais pods permanecem no estado
Pending e nunca iniciam.
Comandos de diagnóstico:
-
CPU ou memória insuficiente nos nós — O scheduler não consegue encontrar um nó que satisfaça as solicitações de recursos do pod.
Verifique a seção
Eventsdokubectl describe pod. Procure mensagens comoInsufficient cpuouInsufficient memory. Reduzaresources.requestsno seuvalues.yamlou adicione mais nós ao cluster. -
PersistentVolumeClaim não vinculado — Um PVC exigido por uma dependência (PostgreSQL, MongoDB, Valkey) está travado em
Pending.Verifique se existe um StorageClass disponível e configurado como padrão. Consulte PVC travado em Pending abaixo. -
Node selector ou affinity sem correspondência — O pod exige um label de nó específico que nenhum nó do cluster possui.
Verifique seu
values.yamlpara configurações denodeSelectorouaffinitye confirme que os nós têm os labels esperados:
ImagePullBackOff
Sintoma: Os pods mostram o status
ImagePullBackOff ou ErrImagePull.
Comandos de diagnóstico:
-
Tag de imagem incorreta — A tag especificada não existe no registry. Verifique o valor de
image.tagno seuvalues.yamlcomparando com a tabela de compatibilidade de versões. -
Registry privado requer autenticação — O cluster não consegue baixar as imagens sem credenciais.
Crie um secret de pull de imagem e referencie-o no seu
values.yaml: -
imagePullSecretsnão configurado — O secret existe mas não está referenciado na configuração do componente. Certifique-se de queimagePullSecretsesteja configurado em todos os componentes afetados.
CrashLoopBackOff
Sintoma: Os pods iniciam e caem imediatamente, reiniciando repetidamente. Comandos de diagnóstico:
-
Variáveis de ambiente incorretas ou ausentes — Uma chave de configuração necessária está ausente ou tem um valor incorreto. Verifique os logs buscando mensagens como
missing env var,invalid configou similares. Revise a seçãoconfigmapdo seuvalues.yaml. -
Secret do Kubernetes ausente — O pod referencia um secret que não existe.
Se o secret não existe, crie-o manualmente ou execute novamente a instalação do Helm.
-
Credenciais de banco de dados incorretas — O serviço não consegue autenticar com PostgreSQL, MongoDB ou Redis.
Verifique os logs buscando
authentication failed,connection refusedouECONNREFUSED. Confirme a seçãosecretsno seuvalues.yamle verifique se as credenciais correspondem às usadas ao provisionar os bancos de dados. -
OOMKilled — O container excedeu seu limite de memória e foi eliminado pelo kernel.
Procure
OOMKilledna seçãoLast State. Aumenteresources.limits.memoryno seuvalues.yaml. Consulte Evicção de pod / OOMKilled abaixo.
Timeout no Helm install
Sintoma:
helm install ou helm upgrade falha com erro de timeout antes de o release atingir o estado deployed.
Comandos de diagnóstico:
-
Download de imagens lento — Imagens grandes em uma conexão lenta podem ultrapassar o timeout padrão. Aumente o timeout:
-
Init containers falhando — Um init container (por exemplo, o job de bootstrap do banco de dados) está travado ou reiniciando. Verifique os logs do init container:
-
Readiness probes falhando — O pod está rodando mas não passa na verificação de readiness, então o Helm espera indefinidamente. Descreva o pod e verifique as seções
ConditionseEvents. Pode ser necessário aumentarinitialDelaySecondsnas configurações do readiness probe, ou investigar por que o serviço não está saudável na inicialização.
Serviços inacessíveis
Sintoma: As APIs do Midaz não são acessíveis de fora do cluster, ou os serviços não conseguem se comunicar internamente. Comandos de diagnóstico:
-
Configuração incorreta do Ingress — O recurso Ingress existe mas o controller não está processando. Verifique se
ingress.classNamecorresponde à classe do seu ingress controller instalado:Também verifique se o pod do ingress controller está rodando: -
DNS não aponta para o load balancer — O hostname no seu Ingress não resolve para o IP externo do controller. Obtenha o IP externo e compare com seu registro DNS:
-
Configuração TLS incorreta — Um secret TLS ausente ou expirado faz o ingress falhar silenciosamente. Verifique se o secret existe e não está expirado:
Se usar cert-manager, verifique o status do recurso Certificate:
PVC travado em Pending
Sintoma: Um PersistentVolumeClaim permanece em estado
Pending e o pod dependente não consegue iniciar.
Comandos de diagnóstico:
-
Sem StorageClass padrão — Nenhum StorageClass está marcado como padrão no cluster.
Se nenhum mostrar
(default), crie um StorageClass ou configure um explicitamente no seuvalues.yamlpara a dependência afetada (por exemplo,postgresql.primary.persistence.storageClass). -
Modo de acesso incorreto — O StorageClass não suporta o modo de acesso solicitado pelo PVC (por exemplo,
ReadWriteManyem um driver de armazenamento que só suportaReadWriteOnce). Verifique a seçãoEventsdokubectl describe pvc. AjusteaccessModesno seuvalues.yamlpara corresponder ao que seu StorageClass suporta. -
Modo de binding do volume é
WaitForFirstConsumer— Alguns StorageClasses usam binding adiado. O PVC ficará emPendingaté que um pod que o consume seja agendado. Este é um comportamento normal; aguarde o pod ser agendado.
Evicção de pod / OOMKilled
Sintoma: Os pods são repetidamente evictados ou mostram
OOMKilled em seu último estado.
Comandos de diagnóstico:
-
Limites de memória muito baixos — O
resources.limits.memorydo container está abaixo do que o serviço realmente precisa sob carga. Verifique o uso atual de memória comkubectl top podse então aumente o limite no seuvalues.yaml: -
Nó sob pressão de memória — O próprio nó está sob pressão e o kubelet está evictando pods de menor prioridade. Verifique as condições do nó:
Considere adicionar nós ou habilitar o cluster autoscaler. Você também pode definir
PriorityClassnos pods do Midaz para protegê-los de evicção.
Definições do RabbitMQ não carregadas
Sintoma: Os serviços do Midaz iniciam mas as transações falham, filas estão ausentes, ou mensagens não estão sendo processadas. Os logs podem mostrar erros de conexão AMQP ou exchanges/filas ausentes. Comandos de diagnóstico:
-
RabbitMQ externo sem
load_definitions.json— Ao usar uma instância externa de RabbitMQ, as filas, exchanges e bindings necessários não estão presentes. Habilite o job de bootstrap no seuvalues.yaml:Ou aplique as definições manualmente:O arquivoload_definitions.jsonestá emcharts/midaz/files/rabbitmq/load_definitions.jsonno repositório do Helm. -
Job de bootstrap falhou silenciosamente — O job foi executado mas encontrou um erro (credenciais erradas, timeout de rede, porta incorreta).
Verifique as credenciais de
rabbitmqAdminLogine confirme que a porta de gerenciamento (padrão15672) é acessível de dentro do cluster.
Recursos relacionados
- Implantar o Midaz com Helm — Guia de instalação inicial
- Atualizar o Midaz e plugins via Helm — Procedimentos de atualização e rollback
- Atualização do Helm — Alterações incompatíveis e caminhos de migração entre versões principais
- Compatibilidade de versões — Tabela de referência de versões
- Repositório do Helm — Código-fonte e notas de versão

