Começar pelo ponto onde falha
Numa entrada em produção, separa admissão, scheduling, obtenção da imagem, inicialização e execução. Um erro de quota acontece antes de o Pod ser criado; FailedScheduling pede informação sobre destinos e recursos; ImagePullBackOff orienta para imagem, registry e credenciais. Um init que falha pode impedir o arranque da aplicação. Regista o evento e o objeto antes de alterar qualquer coisa. No caso fictício funds-check, a API de negócio não tem logs porque o processo nunca começou. A evidência útil está no evento de pull. Esta sequência evita escalar para a equipa errada e preserva o tempo da janela de mudança.
Uma capacidade que existe no mesmo destino
Prepara uma tabela por node com capacidade allocatable e requests já contabilizados. Para um Pod de 500m e 512Mi, uma margem de 800m/300Mi não chega por memória; 400m/1024Mi não chega por CPU. Somar as duas margens cria uma capacidade que nenhum destino oferece. O cálculo é apenas um filtro: labels, taints, volumes, portas e outras condições também podem impedir colocação. Usa valores do mesmo instante e declara as exclusões do exercício. Na reunião APS, distingue falta de capacidade total de distribuição inadequada, pois a decisão pode envolver mover cargas, rever pedidos com medição ou acrescentar capacidade compatível.
Recursos ao longo do ciclo de arranque
Dois containers de aplicação podem executar juntos, pelo que somas os seus requests. Um init normal executa antes deles: no exemplo sem sidecars, overhead ou recursos ao nível do Pod, compara o maior request de init com a soma dos containers de aplicação. Um init de 1000m e aplicações de 300m e 200m produzem 1000m efetivos, não 1500m nem 500m. Não generalizes esta simplificação a sidecars nativos ou outros campos sem rever as regras. Depois do arranque, request não é sinónimo de teto: num node com recursos, o consumo pode ultrapassá-lo, respeitando os mecanismos de limits aplicáveis.
Elegibilidade e manutenção
nodeSelector combina os labels exigidos. Se pede disk=ssd e zone=west, um node com apenas disk=ssd não corresponde. Uma toleration permite ultrapassar o efeito de um taint compatível, mas não obriga a usar o node nem oferece memória. Cordon, por sua vez, impede novas colocações normais e conserva Pods existentes; DaemonSets têm regras próprias que exigem atenção. Num plano de manutenção, identifica as aplicações que ainda dependem do node e o processo de evacuação autorizado. Não declares o node vazio só porque o comando de cordon terminou. O critério de aceitação precisa de observar os workloads relevantes.
Fronteiras dentro do Pod
Containers no mesmo Pod partilham espaço de rede. Dois processos que tentam usar o mesmo endereço e porta podem colidir, mesmo que as portas declaradas tenham nomes diferentes. Separar listeners exige configuração dos processos ou outro desenho de Pods. Um init normal também define uma fronteira temporal: enquanto não concluir, a aplicação não começa. Ao investigar, seleciona o container e a fase corretos. Uma falha de logs por Forbidden introduz outra fronteira, a autorização de pods/log. Essa permissão é distinta de ler o objeto Pod. Nenhuma destas causas é resolvida automaticamente por mudar um Service para exposição pública.
Entregar uma hipótese verificável
Fecha o exercício com objeto, sintoma, hipótese, evidência e resultado esperado após correção. Para o batch de reconciliação, regista pedidos de recursos, node elegível, imagem aprovada, init concluído e resultado funcional. Diferencia uma conta local de scheduling de uma observação num cluster. O modelo desta oficina só aplica os filtros declarados; não executa Kubernetes. Os comandos abaixo são um roteiro de inspeção para contexto e namespace previamente autorizados. Uma equipa internacional deve conseguir reproduzir o raciocínio a partir do registo, sem depender de mensagens vagas como “problema do Kubernetes”. Inclui responsável pela próxima ação e condição para escalar.
kubectl get pods -n funds
kubectl describe pod funds-check -n funds
kubectl logs funds-check -n funds -c prepare-schemaNode A:800m/300Mi; B:400m/1024Mi. Um Pod 500m/512Mi não cabe em nenhum, mesmo com margem agregada.
Armadilhas comuns
Somar capacidade de nodes, ignorar init, tratar toleration como reserva ou cordon como evacuação.
Tópicos relacionados: Oficina: diagnóstico, entrega e indicadores
Localiza a fase e confirma todos os requisitos no mesmo destino.
Referência: Pod resource management · KCNA current four-domain curriculum; edition date unconfirmed