Sobes.tech
Junior

Qual é a diferença entre Pod e Deployment no Kubernetes?

sobes.tech IA

Resposta da IA

Pod — a menor unidade implantável no Kubernetes, representando um grupo de um ou mais contêineres que partilham armazenamento e recursos de rede, bem como a especificação de lançamento do contêiner. Deployment — é um controlador do Kubernetes que fornece atualizações declarativas de Pods. Descreve o estado desejado da aplicação e garante a implantação, atualização e reversão automáticas das versões de Pods, gerindo o ciclo de vida das réplicas de Pods.

Diferenças principais:

  • Unidade: Pod — unidade fundamental de planeamento e implantação; Deployment — controlador de nível superior para gerir Pods.
  • Ciclo de vida: Os Pods não têm mecanismos integrados de autorrecuperação (exceto reiniciar contêineres em caso de falha); Deployment substitui automaticamente os Pods com falha e gere o seu escalonamento.
  • Escalonamento: Escalar Pods diretamente não é eficiente; Deployment permite escalar facilmente o número de réplicas de Pods.
  • Atualização/Reversão: Os Pods não suportam versionamento nem implantação/reversão de atualizações; Deployment oferece estratégias para atualizações suaves e reversão rápida de versões da aplicação.

Exemplo de manifesto de Pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app-container
    image: nginx:latest
    ports:
    - containerPort: 80

Exemplo de manifesto de Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3 # Especifica o número desejado de réplicas de Pods
  selector:
    matchLabels:
      app: my-app # Seletor para escolher Pods geridos por este Deployment
  template:
    metadata:
      labels:
        app: my-app # Etiqueta para Pods
    spec:
      containers:
      - name: my-app-container
        image: nginx:latest
        ports:
        - containerPort: 80

Comparação:

Característica Pod Deployment
Nível Baixo, unidade básica Alto, controlador
Gestão Direta, sem automação Declarativa, automatizada
Escalamento Manual, não recomendado Automatizado, por réplicas
Atualizações Não suportam versionamento ou implantação/reversão Estratégias declarativas e de atualização
Reversão Não suportada Suportada
Auto-recuperação Limitada (reinício do contêiner) Substituição automática de Pods

Na maioria dos casos, ao implantar aplicações no Kubernetes, usam-se Deployments para gerir Pods, garantindo fiabilidade, escalabilidade e automação.