🚀 Deploy
Um Deployment é a forma padrão de colocar uma aplicação para rodar no cluster. Você diz qual imagem usar e quantas cópias (réplicas) quer, e o Kubernetes cria os pods e os mantém rodando: se um pod cair, ele cria outro.
Deployment -> ReplicaSet -> Pods
O deploy é feito com o kubectl. O Painel Nuvion cuida do cluster, mas não cria aplicações dentro dele.
🚀 Antes de começar
- Ter o acesso ao cluster configurado (veja Acesso ao Cluster).
🚀 1. Criar o arquivo do Deployment
Crie o arquivo deploy-web.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 2
selector:
matchLabels:
app: web-deploy
template:
metadata:
labels:
app: web-deploy
spec:
containers:
- name: nginx
image: nginx:1.26
ports:
- containerPort: 80
resources:
requests:
cpu: 100m
memory: 64Mi
limits:
cpu: 250m
memory: 128Mi
readinessProbe:
httpGet:
path: /
port: 80
O que cada parte faz:
| Campo | Função |
|---|---|
replicas | Quantos pods manter rodando |
image | A imagem (e a versão) do container |
requests | O mínimo de recurso que o pod precisa |
limits | O máximo de recurso que o pod pode usar |
readinessProbe | Só envia tráfego ao pod depois que ele responde |
🚀 2. Aplicar
kubectl apply -f deploy-web.yaml
Saída esperada: deployment.apps/web-deploy created
🚀 3. Verificar
kubectl get deployment web-deploy
kubectl get pods -l app=web-deploy
Aguarde a coluna READY mostrar 2/2 e os pods ficarem Running.
🚀 4. Ver a recriação automática
Exclua um dos pods e observe:
kubectl delete pod NOME-DE-UM-DOS-PODS
kubectl get pods -l app=web-deploy
O Kubernetes cria um pod novo para manter 2 réplicas.
🚀 5. Expor a aplicação
Para acessar o Deployment, crie um Service (veja a página Services):
kubectl expose deployment web-deploy --name=web-deploy-svc --port=80
✅ Como saber se deu certo
kubectl get deployment web-deploy mostra READY 2/2 e AVAILABLE 2.
❗ Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
READY 0/2 | Pods não iniciaram | Veja kubectl describe pod e Events |
ImagePullBackOff | Imagem ou versão não existe | Confira o nome e a tag em image |
selector does not match template labels | matchLabels diferente de labels | Use o mesmo rótulo nos dois |
Pods Pending | Sem recurso nos nodes | Reduza requests ou aumente a capacidade (Scale) |
🧹 Limpeza
Mantenha o Deployment para as próximas páginas de Operações. Quando terminar:
kubectl delete svc web-deploy-svc
kubectl delete deployment web-deploy
➡️ Próximo passo: Scale
🧠 Dúvidas?
Fale com nosso time de suporte técnico da SaveinCloud!