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.