Pular para o conteúdo principal

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​

  1. Qual é a diferença entre um Pod de único contêiner e multi-contêiner?
  2. Como os contêineres em um Pod se comunicam?
  3. Por que usar labels?
  4. 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