Pular para o conteúdo principal

🚀 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
informação

O deploy é feito com o kubectl. O Painel Nuvion cuida do cluster, mas não cria aplicações dentro dele.


🚀 Antes de começar​

🚀 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:

CampoFunção
replicasQuantos pods manter rodando
imageA imagem (e a versão) do container
requestsO mínimo de recurso que o pod precisa
limitsO máximo de recurso que o pod pode usar
readinessProbeSó 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​

SintomaCausaSolução
READY 0/2Pods não iniciaramVeja kubectl describe pod e Events
ImagePullBackOffImagem ou versão não existeConfira o nome e a tag em image
selector does not match template labelsmatchLabels diferente de labelsUse o mesmo rótulo nos dois
Pods PendingSem recurso nos nodesReduza 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!