K8s em Exemplos: Checklist de Produção
| O que funciona em dev costuma quebrar em produção. Este checklist cobre os pontos essenciais: limites de recursos, health checks, desligamento gracioso e alta disponibilidade. |
| 1-recursos.yaml | |
| Defina requests e limits de recursos. Sem requests, o scheduler não tem informação suficiente para tomar boas decisões e seu Pod pode acabar em um node já sobrecarregado. Sem limits, um vazamento de memória pode derrubar o node inteiro. | |
| Iguale o limit de memória ao request. Isso coloca o Pod na classe QoS Guaranteed, tornando o scheduling mais previsível. Para CPU, tudo bem ter um limit maior que o request (permitindo burst), mas memória deve ser igual para evitar OOMKills inesperados. | |
| 2-probes.yaml | |
| Configure o readiness probe. Sem ele, o tráfego começa a chegar nos Pods antes que eles estejam prontos. Durante rolling updates, os usuários acabam vendo erros. O probe deve verificar se a aplicação realmente consegue atender requisições, não apenas se o processo está rodando. | |
| Configure o liveness probe. Ele reinicia processos que travaram. Mas cuidado: se o check for muito agressivo, você vai reiniciar Pods saudáveis que estão apenas sob carga alta. Mantenha-o mais simples que o readiness — basta verificar se o processo responde. | |
| 3-shutdown.yaml | |
| Trate o sinal SIGTERM. O Kubernetes envia SIGTERM, aguarda o tempo definido em | |
| O truque do sleep no preStop: Load balancers levam alguns segundos para remover os endpoints da lista. Sem esse delay, requisições ainda chegam em Pods que já estão terminando. O sleep dá tempo para o LB se atualizar, e só então sua aplicação processa o SIGTERM de forma limpa. | |
| 4-replicas.yaml | |
| Rode múltiplas réplicas. Uma única réplica é um ponto único de falha. Durante manutenção de nodes, deploys ou crashes, seu serviço fica indisponível. Use no mínimo 2 réplicas para qualquer serviço importante, e 3 ou mais para os fluxos críticos. | |
| 5-anti-affinity.yaml | |
| Distribua os Pods entre nodes diferentes. Ter 3 réplicas no mesmo node ainda é um ponto único de falha. O anti-affinity garante que os Pods fiquem em nodes separados. Use | |
| 6-pdb.yaml | |
| Defina um Pod Disruption Budget. Sem PDB, um | |
| 7-seguranca.yaml | |
| Remova privilégios de root. Rodar como root dentro do container é desnecessário para a maioria das aplicações — e perigoso caso o container seja comprometido. Configure | |
| Use filesystem read-only. Isso impede que atacantes instalem malware no container. Para diretórios que precisam de escrita (como tmp ou cache), use volumes | |
| 8-rolling-update.yaml | |
| Configure a estratégia de rolling update. Os valores padrão são bem conservadores. O | |
| 9-labels.yaml | |
| Adicione labels operacionais. Você vai precisar delas quando tudo estiver pegando fogo às 3 da manhã. Use | |
| 10-completo.yaml | |
| Deployment completo pronto para produção. Aqui está tudo junto. Este Deployment sobrevive a falhas de node, faz deploy de forma segura, desliga graciosamente e não roda como root. | |
Índice | Use as setas do teclado para navegar