Lab 3.1 - Criação e Gerenciamento de Pods
Objetivos
Ao final deste lab, você será capaz de:
- Criar Pods com YAML
- Gerenciar o ciclo de vida dos Pods
- Utilizar labels e selectors
- Inspecionar Pods
Pré-requisitos
- Cluster Kubernetes funcional
- kubectl instalado e configurado
Exercício 1: Criar um Pod Simples
Etapa 1: Criar o arquivo YAML
Crie pod-simple.yaml:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
env: dev
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
Etapa 2: Criar o Pod
kubectl apply -f pod-simple.yaml
Etapa 3: Verificar
# Ver o Pod
kubectl get pods
# Detalhes
kubectl describe pod nginx-pod
# Logs
kubectl logs nginx-pod
Exercício 2: Pod com Variáveis de Ambiente
Crie pod-env.yaml:
apiVersion: v1
kind: Pod
metadata:
name: env-pod
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'echo $MESSAGE && sleep 3600']
env:
- name: MESSAGE
value: "Hello from Kubernetes!"
Aplique e verifique os logs.
Exercício 3: Pod Multi-Contêiner
Crie pod-multi.yaml:
apiVersion: v1
kind: Pod
metadata:
name: multi-pod
spec:
containers:
- name: nginx
image: nginx:1.20
- name: busybox
image: busybox
command: ['sh', '-c', 'while true; do echo $(date); sleep 5; done']
Teste a comunicação entre os contêineres.
Exercício 4: Labels e Selectors
Etapa 1: Criar vários Pods com labels
kubectl run pod1 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod2 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod3 --image=nginx:1.20 --labels=app=api,env=dev
Etapa 2: Filtrar com labels
# Pods com app=web
kubectl get pods -l app=web
# Pods com app=web E env=prod
kubectl get pods -l app=web,env=prod
# Pods sem env=dev
kubectl get pods -l 'env!=dev'
Exercício 5: Ciclo de Vida
Etapa 1: Observar as fases
# Criar um Pod
kubectl run test-pod --image=nginx:1.20
# Observar as fases
kubectl get pod test-pod -w
# Ver os eventos
kubectl describe pod test-pod
Etapa 2: Testar o reinício
Crie um Pod que falha:
apiVersion: v1
kind: Pod
metadata:
name: crash-pod
spec:
restartPolicy: Always
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'exit 1']
Observe o reinício automático.
Limpeza
# Remover todos os Pods criados
kubectl delete pod nginx-pod env-pod multi-pod pod1 pod2 pod3 test-pod crash-pod
Perguntas para Reflexão
- Qual é a diferença entre um Pod de único contêiner e multi-contêiner?
- Como os contêineres em um Pod se comunicam?
- Por que usar labels?
- O que acontece se um contêiner falhar?
Próximos Passos
Lab 3.2: Deploy com ReplicaSets
Capítulo 3.5: ReplicaSets
Lab criado em: Dezembro 2024