Kubernetes para APIs
Voltar para Learn
FAACCapítulo 33

Fundamentos e Arquitetura de APIs Corporativas

Kubernetes para APIs

Workloads, Services, Gateway API, configuração, autoscaling, segurança, observabilidade e operação de APIs em clusters

Edição aprofundada - material de estudo e consulta profissional

Cluster Kubernetes executando APIs com roteamento, segurança, autoscaling e observabilidade

Kubernetes para : reconciliar estado, tráfego e capacidade

Cluster Kubernetes executando APIs com roteamento, segurança e observabilidade
Figura de abertura - Kubernetes fornece reconciliação e abstrações operacionais; o caminho da atravessa várias camadas.

Princípio central

Kubernetes mantém estado desejado por reconciliação; confiabilidade depende da combinação correta de workloads, rede, capacidade, segurança e observabilidade.

Edição aprofundada - material de estudo e consulta profissional

Apresentação do capítulo

Os capítulos anteriores apresentaram microserviços, mensageria, mesh e observabilidade. Kubernetes é a plataforma que frequentemente reúne esses elementos em produção: agenda workloads, distribui configurações, expõe serviços, executa rollouts, aplica políticas e fornece uma declarativa para automação. Para equipes de , porém, conhecer apenas comandos de kubectl não é suficiente. É necessário compreender como cada abstração interfere no caminho da requisição, no consumo de recursos, na identidade do workload e no comportamento durante falhas.

Kubernetes não transforma automaticamente uma aplicação em sistema resiliente. O pode reiniciar um , mas não sabe se uma operação de negócio é idempotente. Pode criar mais réplicas, mas não conhece o limite de conexões do banco. Pode balancear tráfego entre Pods, mas não corrige uma readiness probe superficial. A plataforma automatiza mecanismos; a arquitetura precisa fornecer sinais, contratos, limites e políticas coerentes.

Este capítulo percorre o do control plane ao e conecta os conceitos diretamente ao ciclo de vida de . Serão estudados Deployments, Services, EndpointSlices, , , recursos e limites, probes, autoscaling, scheduling, configuração, segredos, identidade, , , armazenamento, observabilidade, GitOps e . O foco é construir um modelo mental operacional: dado um sintoma observado pelo consumidor, quais objetos e evidências devem ser examinados?

A abordagem considera gerenciados e autogerenciados, sem depender de um provedor específico. Exemplos usam recursos estáveis e padrões amplamente adotados. Recursos adicionais, controladores e CRDs podem ampliar o Kubernetes, mas devem ser avaliados como software com ciclo de vida próprio, compatibilidade, permissões e impacto operacional.

Como estudar este capítulo

Para cada objeto, diferencie spec (estado desejado), status (estado observado), responsável, eventos gerados e dependências externas. Essa leitura é mais útil do que memorizar comandos isolados.

Objetivos de aprendizagem

  • Explicar a arquitetura do e a função dos principais componentes do control plane e dos nós.
  • Relacionar o modelo declarativo e o loop de reconciliação à operação de .
  • Distinguir , ReplicaSet, , , DaemonSet, Job e CronJob.
  • Compreender Services, , EndpointSlices, Ingress e .
  • Configurar , limits, probes e estratégias de rollout de forma coerente.
  • Explicar , VPA e node autoscaling, incluindo suas dependências e conflitos.
  • Aplicar ServiceAccounts, , Security Standards, NetworkPolicies e proteção de Secrets.
  • Relacionar namespaces, quotas, scheduling e topologia a isolamento e disponibilidade.
  • Integrar , métricas, e eventos ao do .
  • Projetar uma cadeia de entrega declarativa, auditável e segura para .

Estrutura do capítulo

  • 33.1 Kubernetes como sistema de reconciliação
  • 33.2 Arquitetura do
  • 33.3 Pods e ciclo de vida de
  • 33.4 Controllers de workload e Deployments
  • 33.5 Services, e EndpointSlices
  • 33.6 Ingress e
  • 33.7 ConfigMaps, Secrets e configuração
  • 33.8 , limits e QoS
  • 33.9 Startup, readiness e liveness probes
  • 33.10 Autoscaling e capacidade
  • 33.11 Scheduling, topologia e disponibilidade
  • 33.12 Segurança, identidade e rede
  • 33.13 Armazenamento e workloads
  • 33.14 Observabilidade, entrega, e laboratórios

33.1 Kubernetes como sistema de reconciliação

Kubernetes é uma plataforma declarativa. O usuário cria ou altera objetos na , descrevendo um estado desejado. Controllers observam esses objetos e o estado real do , calculam diferenças e executam ações para reduzir a divergência. Um com três réplicas não é um comando para iniciar três processos; é uma declaração persistente que continuará sendo reconciliada quando Pods falharem, nós forem drenados ou uma nova versão for publicada.

Esse modelo produz uma mudança importante de raciocínio. Em sistemas imperativos, uma automação executa passos e considera o trabalho concluído quando os comandos retornam sucesso. No Kubernetes, o aceite de um manifesto indica apenas que o objeto passou pela e foi persistido. A disponibilidade real depende de scheduling, download da imagem, inicialização, probes, dependências e status dos controllers. Por isso, precisam observar condições, não apenas o retorno do apply.

A do Kubernetes é extensível. CustomResourceDefinitions permitem registrar novos tipos e controllers podem implementar semânticas próprias, formando operators. Essa capacidade viabiliza bancos, , certificados e plataformas internas, mas também aumenta a superfície operacional. Cada precisa de ownership, política de upgrade, , backups e compreensão do que acontece quando seu fica indisponível.

Modelo mental

Objeto aceito não significa workload pronto. Leia generation, observedGeneration, conditions, eventos e status do para saber se o estado desejado foi realmente alcançado.

33.2 Arquitetura do

Um possui control plane e worker nodes. O kube-apiserver expõe a e centraliza autenticação, autorização, admission e persistência. O etcd armazena o estado do . O scheduler escolhe um nó para Pods ainda não agendados considerando recursos, afinidades, restrições e plugins. O kube- -manager executa loops de reconciliação para objetos nativos. Provedores podem adicionar cloud- -manager e outros controladores.

Nos nós, o kubelet garante que os descritos nos PodSpecs estejam executando por meio de um runtime compatível. A rede do é implementada por plugins ; persistência usa ; integração com dispositivos pode usar plugins específicos. O componente de ou uma implementação equivalente mantém regras de encaminhamento de Services. Em gerenciados, parte desses componentes é operada pelo provedor, mas suas responsabilidades continuam relevantes para diagnóstico.

A do é uma fronteira crítica. Toda automação, operador e pessoa que possui credenciais pode potencialmente alterar o estado do ambiente conforme suas permissões. A disponibilidade do control plane afeta mudanças e reconciliação, embora workloads existentes possam continuar processando tráfego por algum tempo. Backups de etcd, políticas de acesso, auditoria e procedimentos de recuperação pertencem ao desenho da plataforma.

Control plane coordenando worker nodes e workloads
Figura 1 - O control plane mantém o estado e coordena os nós; os workloads executam nos worker nodes.

33.3 Pods e ciclo de vida de

é a menor unidade implantável do Kubernetes. Um contém um ou mais co-localizados, compartilhando de rede e volumes definidos no PodSpec. no mesmo comunicam-se por localhost e são agendados juntos. Esse acoplamento é adequado para ou auxiliares que pertencem ao mesmo ciclo de vida; não é um mecanismo para colocar vários microserviços independentes na mesma unidade.

Pods são descartáveis. Um novo normalmente recebe novo UID e novo endereço . Aplicações não devem depender da identidade de uma instância específica. Estado durável precisa estar em sistemas externos ou volumes persistentes, e descoberta deve usar ou mecanismos equivalentes. O Kubernetes reinicia no mesmo conforme a restartPolicy, mas substituições realizadas por controllers geram novos Pods.

O ciclo inclui criação, scheduling, pull da imagem, execução de init , startup de , probes, hooks e término. Ao remover um , o kubelet envia sinal de término, respeita o grace period e encerra forçadamente quando necessário. precisam responder a SIGTERM, parar de aceitar novas requisições, concluir trabalho em andamento dentro do prazo e fechar recursos. Ignorar esse ciclo provoca erros durante rollouts e drenagem de nós.

Tabela 1 - Containers no mesmo Pod compartilham destino operacional e ciclo de vida.
ElementoFunçãoUso em APIs
Init containerExecuta antes dos containers principais.Preparação curta e determinística; não deve substituir migração coordenada.
SidecarContainer auxiliar no mesmo Pod.Proxy de mesh, agente ou adaptação estreitamente acoplada.
Ephemeral containerDiagnóstico temporário.Inspeção de Pods sem ferramentas, sob controle de acesso.
Lifecycle hookAção em eventos do container.Drenagem, registro ou encerramento controlado.

33.4 Controllers de workload e Deployments

Aplicações não devem criar Pods isolados para produção. Controllers de workload administram réplicas e substituições. é a escolha comum para : mantém ReplicaSets e executa atualizações declarativas. fornece identidade e ordenação estáveis para workloads que realmente precisam dessas propriedades. DaemonSet executa uma cópia por nó elegível, enquanto Job e CronJob representam trabalho finito e agendado.

No rolling update, o cria gradualmente Pods da nova revisão e remove réplicas antigas. maxSurge controla capacidade temporária adicional; maxUnavailable limita indisponibilidade durante o rollout. Esses valores precisam ser compatíveis com quotas, capacidade de nós e comportamento das probes. Um rollout pode ficar bloqueado por imagem inválida, falta de recursos, readiness falhando ou PDBs e políticas de scheduling restritivas.

restaura uma revisão anterior do template, mas não desfaz mudanças em banco, tópicos, contratos ou dependências externas. Estratégias seguras separam alterações de , mantêm compatibilidade durante a janela de coexistência e usam telemetria para promoção. Canary e blue-green normalmente exigem um controlador de entrega ou roteamento que divida tráfego e avalie métricas; Kubernetes puro oferece os blocos, não toda a política de decisão.

resumido para uma

apiVersion: apps/v1 kind: metadata: name: clientes- spec: replicas: 3 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: clientes- template: metadata: labels: app: clientes- spec: : - name: image: registry.example/clientes- :2.4.0 ports: - containerPort: 8080

33.5 Services, e EndpointSlices

fornece um lógico estável para um conjunto de Pods selecionados por labels ou por configuração explícita. ClusterIP cria acesso interno; NodePort publica uma porta nos nós; LoadBalancer solicita integração com um balanceador externo quando a plataforma oferece esse recurso. ExternalName cria um alias e não funciona como . A escolha deve refletir a topologia, não conveniência momentânea.

O do cria nomes para Services. Uma aplicação no mesmo pode usar apenas o nome curto; em outros namespaces, usa nome qualificado como clientes- .pagamentos.svc. O , o comportamento do resolver, pools de conexão e atualizações de EndpointSlices influenciam quanto tempo consumidores mantêm destinos antigos. Uma conexão já estabelecida não é movida automaticamente quando o conjunto de Pods muda.

EndpointSlices representam endereços de associados a Services e incluem condições como ready, serving e terminating. e controladores usam essas informações para programar tráfego. Se uma readiness probe falha, o pode continuar Running, mas deixar de aparecer como destino pronto. Esse detalhe explica por que olhar apenas para a fase do é insuficiente durante incidentes.

Tabela 2 - Service abstrai destinos, mas a implementação de rede continua relevante.
Tipo de ServiceExposiçãoObservação
ClusterIPSomente rede do cluster.Padrão para comunicação interna.
NodePortPorta em cada nó.Frequentemente usado como bloco para balanceadores; exige controle de rede.
LoadBalancerEndereço externo ou interno do provedor.Custo, health checks e origem do cliente dependem da implementação.
ExternalNameCNAME no DNS do cluster.Sem selector, proxy ou health check nativo.

33.6 Ingress e

Ingress é um recurso consolidado para expor e , mas seu modelo é limitado e vários comportamentos dependem de annotations específicas de cada . evolui essa área com separação explícita de responsabilidades. GatewayClass representa uma implementação; solicita listeners e infraestrutura; Routes, como HTTPRoute, descrevem como o tráfego é associado a Services.

A separação permite que a equipe de plataforma administre classes, endereços e listeners, enquanto equipes de aplicação controlam rotas autorizadas. HTTPRoute oferece matches por hostname, path, e outros critérios, além de filtros e múltiplos conforme o suporte da implementação. ReferenceGrant controla referências entre namespaces e reduz acoplamento implícito.

Para corporativas, pode organizar entrada de tráfego sem substituir um completo. Autenticação , quotas por consumidor, monetização, transformação avançada e portal de desenvolvedores podem permanecer em uma plataforma de Management. O desenho deve decidir onde termina , onde identidade é validada, como o endereço de origem é preservado e quais políticas são aplicadas em cada camada.

Gateway e Route encaminhando tráfego por Service e EndpointSlices
Figura 2 - e Route selecionam o ; EndpointSlices conduzem o tráfego aos Pods elegíveis.

HTTPRoute simplificado

apiVersion: .networking.k8s.io/v1 kind: HTTPRoute metadata: name: clientes spec: parentRefs: - name: -corporativo hostnames: - .example.com rules: - matches: - path: type: PathPrefix value: /clientes backendRefs: - name: clientes- port: 8080

33.7 ConfigMaps, Secrets e configuração

ConfigMap armazena dados não confidenciais desacoplados da imagem. Pode ser consumido como variáveis de ambiente, argumentos ou arquivos em volumes. Alterações em variáveis não atualizam processos existentes; volumes projetados podem refletir mudanças após algum tempo, mas a aplicação precisa recarregar o arquivo. Reinícios controlados por de configuração são comuns para tornar a versão efetiva explícita.

Secret representa pequena quantidade de dados sensíveis, porém sua existência não garante proteção completa. Dados podem ser apenas codificados em no manifesto, persistidos em etcd e expostos a usuários com permissão de leitura ou criação de Pods capazes de montá-los. Boas práticas incluem criptografia em repouso, mínimo, integração com ou provedores , rotação e impedimento de acidentais.

Configuração deve ser versionada e validada como parte do contrato operacional. , , , certificados e limites precisam de , ownership e estratégia de . Colocar grandes arquivos, artefatos binários ou segredos de longa duração em objetos genéricos aumenta risco. Para , configuração inválida deve causar falha clara de inicialização, não comportamento parcialmente funcional.

Segredo não é identidade

Montar uma credencial estática em todos os Pods cria distribuição e rotação difíceis. Quando possível, prefira identidade de workload e credenciais temporárias vinculadas ao ou ao provedor.

33.8 , limits e classes de QoS

expressam recursos usados pelo scheduler para posicionar Pods e são base para vários mecanismos de autoscaling e capacidade. Limits restringem consumo conforme o recurso e runtime. CPU acima do limit tende a ser throttled; memória ultrapassando o limite pode levar a OOMKill. Um muito baixo causa overcommit e competição; muito alto impede scheduling e desperdiça capacidade reservada.

Kubernetes classifica Pods em classes de QoS conforme e limits. Guaranteed exige igualdade de e limit para CPU e memória de todos os . Burstable cobre os demais Pods com alguma reserva. BestEffort não possui ou limits e tende a ser o primeiro candidato em pressão de recursos. QoS não substitui prioridade, ou capacidade; é apenas um dos sinais usados em situações de pressão.

Para , valores devem vir de testes e telemetria. CPU costuma acompanhar throughput, enquanto memória pode depender de heap, , , conexões e . também consomem recursos e precisam entrar no cálculo. Limites rígidos podem aumentar latência por ; ausência de limites pode permitir que uma falha afete o nó inteiro. A decisão precisa equilibrar isolamento, eficiência e comportamento do runtime.

Tabela 3 - Requests e limits são parâmetros de engenharia, não valores decorativos.
ConfiguraçãoEfeito principalFalha comum
CPU requestReserva lógica para scheduling.Baixo demais gera contenção; alto demais deixa Pod Pending.
CPU limitTeto de tempo de CPU.Throttling e latência elevada.
Memory requestBase de scheduling e capacidade.Subestimativa produz pressão e evictions.
Memory limitTeto de memória do container.OOMKill e reinício.

33.9 Startup, readiness e liveness probes

Startup probe indica se a aplicação terminou de iniciar. Enquanto ela não obtém sucesso, liveness e readiness podem ser suprimidas, evitando que uma aplicação lenta seja reiniciada antes de ficar pronta. Readiness determina se o deve receber tráfego; falha remove o dos destinos prontos. Liveness sinaliza que o processo está irrecuperavelmente travado e deve ser reiniciado.

Misturar essas responsabilidades é perigoso. Uma liveness probe que consulta banco, ou serviço externo pode reiniciar todas as réplicas durante uma falha , ampliando o incidente. Readiness pode considerar dependências essenciais, mas precisa evitar flapping e efeitos em cascata. A resposta da probe deve ser barata, determinística e possuir menor que o período.

Durante término, a aplicação precisa falhar readiness antes de fechar conexões, permitindo que o balanceamento pare de enviar novas requisições. preStop pode auxiliar, mas não deve depender de tempo arbitrário sem observação. O grace period deve cobrir drenagem, requisições longas e flush de telemetria. , e consumidores de mensageria exigem lógica própria de encerramento.

Probes de startup, readiness e liveness com responsabilidades distintas
Figura 3 - Startup, readiness e liveness controlam momentos e decisões distintas.

Exemplo de probes com responsabilidades separadas

startupProbe: httpGet: path: /health/startup port: 8080 periodSeconds: 5 failureThreshold: 30 readinessProbe: httpGet: path: /health/ready port: 8080 periodSeconds: 5 timeoutSeconds: 2 livenessProbe: httpGet: path: /health/live port: 8080 periodSeconds: 10 failureThreshold: 3

33.10 Autoscaling e capacidade

HorizontalPodAutoscaler ajusta a quantidade desejada de réplicas de um alvo escalável com base em métricas. CPU e memória podem vir da resource metrics ; métricas customizadas e externas exigem adaptadores. O cálculo usa como referência em vários cenários, portanto ausentes ou incorretos prejudicam o comportamento. Políticas de scaleUp, scaleDown, stabilizationWindow e tolerance reduzem oscilações.

VerticalPodAutoscaler recomenda ou aplica novos e limits conforme histórico, dependendo do modo e da implementação instalada. Mudanças podem exigir recriação de Pods. e VPA podem competir quando ambos atuam sobre a mesma métrica, por isso a arquitetura precisa definir responsabilidades. Node autoscaling adiciona ou consolida nós quando Pods não podem ser agendados ou há capacidade ociosa.

Escala horizontal não remove limites externos. Se todas as réplicas usam o mesmo pool de banco, aumentar Pods pode saturar conexões mais cedo. Métricas de RPS, filas, latência ou concorrência frequentemente representam melhor a demanda de do que CPU isolada. O tempo de inicialização, warm-up de e velocidade de provisionamento de nós precisam entrar no dimensionamento para picos.

Escala coordenada em múltiplas camadas

HPA, scheduler e capacidade de nós em um sistema acoplado
Figura 4 - , scheduler e capacidade de nós formam um sistema acoplado.

33.11 Scheduling, topologia e disponibilidade

O scheduler filtra e pontua nós conforme recursos, selectors, affinity, taints, tolerations e restrições de topologia. nodeSelector é simples; node affinity expressa regras obrigatórias ou preferenciais. affinity aproxima workloads, enquanto anti-affinity e topology spread constraints distribuem réplicas entre nós e zonas. Restrições excessivas podem deixar Pods Pending durante falhas ou expansão.

Taints repelem Pods sem toleration correspondente e são úteis para nós dedicados, GPUs, workloads críticos ou condições especiais. Toleration apenas permite o agendamento; não garante preferência ou exclusividade. PriorityClass influencia preemption, podendo remover Pods de menor prioridade para acomodar trabalho crítico. Esse mecanismo precisa de governança para não transformar toda aplicação em prioridade máxima.

PodDisruptionBudget limita interrupções voluntárias simultâneas, como drenagem e manutenção, mas não protege contra falha de nó ou aplicação. Um incompatível com a quantidade de réplicas pode bloquear upgrades. Disponibilidade real combina réplicas, distribuição entre zonas, probes, capacidade, e redundância de dependências. Ter três Pods no mesmo nó não oferece tolerância à perda do nó.

Tabela 4 - Scheduling traduz requisitos de isolamento e disponibilidade em restrições.
MecanismoPergunta respondidaCuidado
Affinity / anti-affinityQuais Pods ou nós devem ficar próximos ou separados?Regras obrigatórias podem reduzir capacidade elegível.
Topology spreadComo distribuir réplicas por domínio?Labels de topologia precisam ser confiáveis.
Taints / tolerationsQuais workloads podem usar determinado nó?Toleration não cria afinidade.
PDBQuantas interrupções voluntárias são permitidas?Não cobre falhas involuntárias nem substitui réplicas.

33.12 Segurança, identidade e isolamento de rede

fornece identidade para processos em Pods quando eles acessam a do Kubernetes ou sistemas integrados. projetados são temporários, possuem audience e podem ser vinculados ao ciclo de vida do . Cada workload deve possuir específico e automountServiceAccountToken deve ser desabilitado quando o não é necessário. Identidade do workload não deve ser compartilhada entre aplicações sem motivo.

controla ações sobre recursos da por meio de Roles, ClusterRoles e bindings. Permissões como criar Pods, atualizar Deployments, ler Secrets ou vincular roles podem permitir escalada indireta. O princípio do menor privilégio exige revisar verbos, recursos, subresources, namespaces e capacidade de impersonation. Acesso humano e de automações deve ser auditado e separado.

Security Standards definem níveis Privileged, Baseline e Restricted para propriedades de segurança dos Pods. Admission pode aplicar políticas por . controla comunicação permitida entre Pods e entidades de rede, desde que o plugin implemente o recurso. Políticas default-deny, egress explícito, execução sem root, filesystem read-only, seccomp e capabilities mínimas reduzem impacto de comprometimento.

Camadas de segurança protegendo workloads e segredos
Figura 5 - Segurança efetiva combina identidade, autorização, políticas de , rede e proteção de segredos.
Tabela 5 - Cada controle protege uma superfície diferente.
ControleEscopoExemplo para APIs
ServiceAccountIdentidade do workload.API usa credencial temporária para acessar serviço de nuvem.
RBACKubernetes API.Runtime não pode listar Secrets nem alterar Deployments.
Pod SecurityConfiguração do Pod.Sem root, sem privilege escalation e com seccomp.
NetworkPolicyTráfego L3/L4 entre workloads.Somente gateway acessa a porta da API; egress limitado.

33.13 Namespaces, quotas e multi-tenancy

Namespaces organizam nomes e políticas, mas não são uma fronteira de segurança absoluta por si só. Muitos recursos, como Roles, ResourceQuotas e NetworkPolicies, são -scoped, o que permite delegar partes do a equipes. Recursos -scoped, nós, CRDs e componentes compartilhados continuam exigindo governança central.

ResourceQuota limita consumo agregado de CPU, memória, armazenamento e quantidade de objetos em um . LimitRange define defaults e limites por objeto. Quotas evitam que um time consuma toda a capacidade, mas valores rígidos sem processo de ajuste podem bloquear rollouts e resposta a incidentes. Ambientes compartilhados também precisam de isolamento de rede, , admission e observabilidade por tenant.

Multi-tenancy forte pode exigir separados, virtualização ou mecanismos adicionais conforme o risco. Isolamento por costuma ser adequado para times da mesma organização com confiança parcial; não deve ser assumido como equivalente a ambientes fisicamente independentes. A decisão precisa considerar dados, requisitos regulatórios, blast radius, custo e capacidade de operação.

33.14 Armazenamento e workloads

Volumes resolvem necessidades de dados dentro do ciclo do , enquanto PersistentVolume e PersistentVolumeClaim abstraem armazenamento com ciclo de vida próprio. StorageClass descreve classes e provisionamento dinâmico. Access modes, reclaim policy, expansão, snapshots, zonas e desempenho variam conforme o driver e o provedor. Um PVC Bound não garante que a aplicação tenha consistência ou backup adequado.

fornece identidade estável, ordenação e templates de volume por réplica, mas não transforma qualquer banco em sistema distribuído seguro. Operadores de banco podem automatizar membros, e backup, porém adicionam dependência crítica de um . Para a maioria das , dados devem permanecer em serviços externos desenhados para persistência, enquanto Pods podem ser substituídos livremente.

Backups precisam incluir dados, metadados e capacidade de restauração testada. Copiar manifests não recupera volumes nem estado externo. Mudanças de devem ser compatíveis com rollouts e . Jobs de migração precisam de locking, idempotência e observabilidade; executá-los como init de cada réplica pode produzir concorrência e indisponibilidade.

33.15 Observabilidade do e das

Kubernetes produz múltiplas fontes: métricas de componentes e nós, de e sistema, eventos de objetos, audit e status dos recursos. Eventos são úteis para scheduling, pulls, probes e admission, mas têm retenção limitada e não substituem centralizados. precisam de armazenamento com ciclo independente de Pods e nós para sobreviver a reinícios e evictions.

A aplicação deve continuar emitindo estruturados, métricas e como estudado no capítulo anterior. Resource attributes como , , , e permitem correlação. kube-state-metrics expõe estado de objetos; metrics-server atende a resource metrics e autoscaling, não substitui uma plataforma completa de observabilidade. O Collector pode ser implantado como agente por nó e como central conforme volume e requisitos.

Alertas devem relacionar sintomas do usuário a sinais do . Aumento de 5xx pode coincidir com Pods não prontos, OOMKills, , , ou externo. apenas de CPU não explicam essa cadeia. com identidade do , com trace_id e métricas por revisão reduzem o tempo para separar falha de plataforma e falha de aplicação.

Tabela 6 - Diagnóstico confiável combina estado declarativo e telemetria de execução.
EvidênciaPerguntaFerramenta ou objeto
Status e conditionsO controller alcançou o desejado?kubectl get/describe e API do objeto.
EventsQual decisão recente ocorreu?Eventos de scheduling, pull, probe e volume.
LogsO que o processo registrou?Logs do container, sidecar e componentes.
Métricas e tracesQual impacto e caminho?Prometheus/OpenTelemetry e backend de observabilidade.

33.16 Entrega declarativa, imagens e cadeia de suprimentos

Uma cadeia segura começa pela imagem. O build deve ser reproduzível, usar base mínima e atualizada, produzir SBOM, executar scanners e assinar o artefato. Tags mutáveis dificultam auditoria; digests identificam conteúdo exato. O runtime deve restringir registries, verificar assinaturas conforme a política e impedir privilegiados ou imagens não aprovadas.

Manifestos podem ser gerenciados com , Kustomize, Helm ou ferramentas equivalentes. GitOps mantém o estado desejado em repositório e um reconcilia o , criando trilha auditável. Isso não elimina validação: pull precisam de , policy-as-code, diff, teste e segregação de funções. Segredos não devem ser commitados em texto claro.

Rollouts precisam de readiness, estratégia de surge, capacidade temporária e métricas de sucesso. Progressive delivery pode pausar, analisar e promover gradualmente. deve considerar banco e contratos. Uma implantação tecnicamente bem-sucedida, mas com erro funcional, só será interrompida se telemetria e critérios de promoção representarem a experiência real do consumidor.

Entrega declarativa: do artefato ao estado reconciliado

GitOps reconciliando estado desejado e estado observado
Figura 6 - GitOps torna o estado desejado auditável; controllers continuam responsáveis pela convergência.

33.17 , mesh e Kubernetes

Em Kubernetes, ingress ou cuida da entrada e do roteamento até Services, enquanto uma plataforma de Management pode fornecer catálogo, autenticação, quotas, políticas e analytics. O pode executar fora, na borda do ou como workload interno. A decisão afeta latência, blast radius, gestão de certificados e dependência do próprio para receber tráfego.

mesh atua principalmente no tráfego east-west e fornece identidade de workload, , telemetria e políticas. Não deve duplicar de forma descoordenada , e circuit breakers já existentes no cliente ou . A cadeia consumidor - edge - - mesh - serviço pode possuir vários pontos de terminação e observabilidade; o desenho precisa documentar a autoridade de cada camada.

e também precisam de , limits, probes, PDBs e distribuição por zonas. O fato de serem infraestrutura compartilhada aumenta seu impacto. Atualizações devem preservar conexões, rotas e políticas. Contadores distribuídos de , e stores de sessão precisam de arquitetura própria; não devem depender apenas da quantidade de réplicas do .

33.18 de no Kubernetes

O diagnóstico começa pelo sintoma externo e segue por camadas. Se o nome não resolve, investigue e endereço do . Se há de conexão, valide , listeners, NetworkPolicies e . Se o responde 503, examine Route, , EndpointSlices e readiness. Se o reinicia, consulte status, lastState, exit code, eventos, limits e anteriores.

Pending normalmente aponta para scheduling: recursos insuficientes, PVC, affinity, taints ou quotas. ImagePullBackOff indica acesso, nome, tag, credencial ou registry. CrashLoopBackOff é uma política de espera após falhas repetidas, não a causa; a causa está no processo, configuração, probe ou dependência. OOMKilled relaciona-se a memória, enquanto CPU aparece em métricas e latência sem necessariamente reiniciar o .

Ferramentas devem ser usadas com hipótese. kubectl describe mostra eventos e condições; --previous recupera a execução anterior; port-forward isola caminho de rede; ephemeral ajudam quando a imagem não possui utilitários. Capturas, e testes de conectividade devem respeitar autorização. Alterar probe, política ou limit sem evidência pode ocultar o problema e criar outro incidente.

orientado por camadas

Fluxo de troubleshooting desde objetos Kubernetes até a aplicação
Figura 7 - A investigação progride do objeto declarado ao comportamento da aplicação e suas dependências.
Tabela 7 - Estados conhecidos reduzem troubleshooting por tentativa e erro.
SintomaEvidência inicialHipóteses
Pod PendingEvents e scheduler message.Recursos, affinity, taint, PVC, quota.
CrashLoopBackOffLogs atuais/anteriores e exit code.Configuração, processo, probe ou dependência.
Service sem endpointsEndpointSlices e readiness.Selector incorreto ou Pods não prontos.
503 no gatewayRoute, Service, endpoints e upstream logs.Backend indisponível, política ou timeout.
OOMKilledlastState, limits e métricas.Heap, leak, cache, payload ou limite baixo.

33.19 Estudos de caso e laboratórios

Caso 1 - rollout com 503: uma nova versão inicia em 70 segundos, mas a liveness começa após 10 segundos e reinicia o . O nunca obtém réplicas prontas. A correção separa startup e liveness, ajusta o grace period e adiciona monitoramento por revisão. A causa não estava no , embora o consumidor observasse 503.

Caso 2 - aumenta erro de banco: o escala de 5 para 40 Pods por CPU, mas cada abre 20 conexões. O banco suporta apenas 300 conexões. A resposta correta inclui pool global coerente, limite de escala, métrica de fila e proteção do ; simplesmente aumentar o ampliaria a falha.

Caso 3 - inacessível após default-deny: uma ingress permite o do , mas o selector de não corresponde aos labels reais. EndpointSlices continuam prontos, porém pacotes são bloqueados pelo . A investigação compara labels, policy e tráfego, sem remover toda a política permanentemente.

Laboratórios sugeridos

1) Implante uma com , e HTTPRoute. 2) Simule falha de readiness e observe EndpointSlices. 3) Configure /limits e provoque OOM em ambiente isolado. 4) Aplique e acompanhe métricas. 5) Crie , mínimo e default-deny. 6) Execute rollout e com observabilidade por revisão.

Resumo do capítulo

Kubernetes fornece uma declarativa e controllers que reconciliam o estado desejado. Essa abstração permite automatizar réplicas, rollouts, scheduling, configuração e exposição, mas não substitui decisões sobre contratos, dependências e consistência. Para , cada objeto precisa ser relacionado ao caminho da requisição e aos sinais usados para operação.

Pods são efêmeros; Deployments controlam revisões; Services e EndpointSlices fornecem descoberta; organiza entrada e rotas. , limits, probes, autoscaling e scheduling formam um sistema acoplado. Configurações incoerentes criam indisponibilidade mesmo quando todos os objetos parecem válidos individualmente.

Segurança combina ServiceAccounts, , Security, , segredos, cadeia de suprimentos e isolamento. Observabilidade combina estado, eventos, , métricas e . Entrega segura usa artefatos imutáveis, validação, reconciliação e critérios de promoção. eficaz parte do estado observado e avança por camadas.

Próximo passo do curso

O próximo capítulo aprofunda Zero Trust aplicado a , conectando identidade de workloads, menor privilégio, segmentação, verificação contínua e políticas distribuídas.

Checklist para em Kubernetes

  • usa imagem imutável, estratégia de rollout e compatíveis com banco e contratos.
  • e limits foram definidos por teste e telemetria, incluindo .
  • Startup, readiness e liveness respondem a perguntas distintas.
  • e Route possuem selectors, portas, hostnames e referências validados.
  • usa métrica representativa e respeita capacidade de dependências.
  • Réplicas estão distribuídas por nós e zonas, com coerente.
  • e seguem menor privilégio; é desabilitado quando desnecessário.
  • Security e NetworkPolicies reduzem privilégios e caminhos de rede.
  • Secrets usam criptografia, rotação e acesso mínimo.
  • , métricas, , eventos e status estão correlacionados por revisão e .
  • valida manifests, políticas, imagens e condições de rollout.
  • Runbooks cobrem Pending, pull, crash, OOM, vazios, e 503.

Exercícios

  • Explique a diferença entre aplicar um manifesto e alcançar o estado desejado.
  • Compare , , , DaemonSet, Job e CronJob.
  • Descreva o caminho / /Route/ / / .
  • Explique por que um Running pode não receber tráfego.
  • Proponha , limits e probes para uma Java com inicialização lenta.
  • Compare , VPA e node autoscaling e identifique possíveis conflitos.
  • Projete e mínimos para uma acessível apenas pelo .
  • Explique como um pode bloquear manutenção e por que não protege contra falha de nó.
  • Descreva um rollout canary com critérios de promoção baseados em .
  • Monte um runbook para investigar 503 intermitente após um .

Glossário

Tabela 8 - Vocabulário essencial do capítulo.
TermoDefinição
Admission controllerEtapa que valida ou modifica objetos antes da persistência.
CNIInterface de plugins que implementam rede de containers e Pods.
ControllerLoop que reconcilia estado observado e desejado.
CRDExtensão da API que registra um novo tipo de recurso.
CSIInterface para integração de drivers de armazenamento.
DeploymentController de atualizações declarativas para workloads geralmente stateless.
EndpointSliceRecurso que representa endpoints de rede de um Service.
Gateway APIFamília de recursos para roteamento L4/L7 com papéis separados.
HPAController que ajusta réplicas horizontalmente por métricas.
NamespaceEscopo lógico para nomes, políticas e delegação.
NetworkPolicyPolítica de comunicação de Pods implementada pelo CNI.
PDBLimite de interrupções voluntárias simultâneas.
PodMenor unidade implantável do Kubernetes.
ServiceAbstração de rede estável para um conjunto de backends.
ServiceAccountIdentidade Kubernetes destinada a workloads.
StatefulSetController para Pods com identidade e ordenação estáveis.

Referências técnicas

  • Kubernetes Documentation. Concepts, Architecture e Components.
  • Kubernetes Documentation. Pods, Deployments, Services e EndpointSlices.
  • Kubernetes Documentation. ConfigMaps, Secrets e Persistent Volumes.
  • Kubernetes Documentation. Probes, Workload Autoscaling e Node Autoscaling.
  • Kubernetes Documentation. Accounts, Good Practices e Security Standards.
  • Kubernetes Documentation. Network Policies, Multi-tenancy, e Observability.
  • Kubernetes . Overview, HTTPRoute, Security e Versioning.
  • Cloud Native Computing Foundation. Kubernetes project and ecosystem documentation.

Nota de atualização

Kubernetes, , plugins / e serviços gerenciados evoluem continuamente. Antes de aplicar exemplos, valide a versão do , o suporte da implementação e o estado de estabilidade de cada recurso na documentação oficial.