pular para o conteúdo
voltar ao mapa
técnica
etapa: provision
2 min de leitura

Fundamentos de Kubernetes

O Kubernetes executa contêineres em um cluster e os mantém no estado que você declarou. Aprenda os poucos objetos que importam e as configurações que impedem que um pod ruim derrube tudo.

kubectlHelm / Kustomizek9skind / minikubeKyverno / OPA GatekeeperArgo CD

Os objetos principais

  • Pod: um ou mais contêineres que rodam juntos e compartilham uma identidade de rede. A menor unidade que você implanta, e descartável.
  • Deployment: declara quantas réplicas de um pod executar e como distribuir as mudanças. Um ReplicaSet por baixo mantém a contagem.
  • Service: um nome e um endereço estáveis que balanceiam carga para os pods correspondentes, que vêm e vão.
  • Ingress ou Gateway: roteia o tráfego externo por host e caminho para os services.
  • ConfigMap e Secret: configuração e valores sensíveis injetados como variáveis de ambiente ou arquivos. Um Secret é codificado, não criptografado por padrão; proteja-o com criptografia em repouso e acesso restrito.
  • Namespace: um escopo para nomes, quotas e regras de acesso, usado para separar equipes ou ambientes.
  • O control loop: você declara o estado desejado; os controllers fazem continuamente o estado real corresponder a ele.

Um deployment que vale a pena rodar

Defina requests e limits de recursos, probes de saúde, uma estratégia de rollout e um security context restrito. Isso é a diferença entre um pod que se comporta bem e um que surpreende você.

deployment.yamlyaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  selector:
    matchLabels: { app: api }
  strategy:
    rollingUpdate: { maxUnavailable: 0, maxSurge: 1 }
  template:
    metadata:
      labels: { app: api }
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile: { type: RuntimeDefault }
      containers:
        - name: api
          image: registry.example.com/api@sha256:<digest>
          ports: [{ containerPort: 8080 }]
          resources:
            requests: { cpu: 100m, memory: 128Mi }
            limits: { memory: 256Mi }
          readinessProbe:
            httpGet: { path: /ready, port: 8080 }
          livenessProbe:
            httpGet: { path: /health, port: 8080 }
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities: { drop: ["ALL"] }

Comandos do dia a dia

Prefira mudar o cluster por controle de versão e um controller GitOps, e deixe o kubectl para leitura e emergências.

kubectlbash
kubectl get pods -n prod -o wide
kubectl describe pod api-7c9d -n prod           # os eventos explicam a maioria das falhas
kubectl logs deploy/api -n prod --tail=100 -f
kubectl rollout status deploy/api -n prod
kubectl rollout undo deploy/api -n prod          # volta para a revisão anterior
kubectl top pods -n prod

Erros comuns

  • Sem limites de recursos: um pod deixa seus vizinhos sem recursos.
  • Liveness probes que dependem de serviços externos, reiniciando pods saudáveis durante uma queda.
  • Usar tags latest ou mutáveis, de modo que reiniciar um pod muda a versão.
  • Tudo no namespace default, com permissões em todo o cluster para cada workload.
  • Tratar o cluster como aquilo que você opera, em vez da plataforma que suas equipes usam.

conexões no mapa

atualizado em 14/10/2026 · fontes para aprofundar · reportar erro

em outros domínios

Estude antes

Desbloqueia

teste o que entendeu

Carregando perguntas…