Introdução
Neste laboratório, você explorará a menor unidade implantável do Kubernetes: o Pod.
Um Pod é o objeto que o Kubernetes agenda em um nó. Normalmente, você não executa um contêiner diretamente no Kubernetes; em vez disso, os contêineres são colocados dentro de Pods.
Um Pod pode conter um ou mais contêineres que compartilham o contexto de rede e armazenamento. A maioria dos exemplos para iniciantes usa um único contêiner, mas o conceito importante é o design baseado em um ambiente compartilhado.
Você aprenderá a:
- Definir um Pod usando um arquivo de configuração YAML (o modelo).
- Criar o Pod no cluster usando
kubectl. - Verificar o status do Pod para confirmar que ele está em execução.
- Inspecionar a configuração detalhada e o histórico do Pod.
Ao final deste laboratório, você terá um servidor web real em execução dentro de um Pod no seu cluster.
Defina o Pod
Nesta etapa, você definirá seu primeiro Pod. O Kubernetes usa YAML. Um arquivo YAML funciona como um modelo ou uma receita que descreve exatamente como você quer que sua aplicação seja configurada.
Um Pod é o menor objeto agendado pelo Kubernetes, mas não é a mesma coisa que um contêiner. Um contêiner é o processo da aplicação em execução e a imagem do sistema de arquivos usada por ele. Um Pod é o invólucro do Kubernetes em torno de um ou mais contêineres. Esse invólucro fornece a eles uma identidade de rede compartilhada, um ciclo de vida compartilhado e, opcionalmente, armazenamento compartilhado.
A definição de um Pod exige quatro elementos principais:
- apiVersion: A versão da linguagem do Kubernetes que estamos usando.
- kind: O tipo de objeto que estamos criando (neste caso, um
Pod). - metadata: Informações que identificam o objeto, como nome e labels.
- spec: A “especificação” — o conteúdo principal da receita. Ela descreve os contêineres que serão executados.
Você criará um arquivo chamado nginx-pod.yaml. Esse arquivo definirá um Pod chamado nginx-pod que executa um único contêiner usando a imagem nginx (um servidor web popular).
Crie o arquivo usando o editor de texto nano:
nano nginx-pod.yaml
Copie e cole o conteúdo a seguir no arquivo. Leia com atenção para identificar as quatro seções que discutimos:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Para salvar e sair do nano padrão, pressione Ctrl+X, depois digite Y para confirmar o salvamento e pressione Enter para gravar o arquivo com esse nome.
Agora você escreveu seu primeiro modelo do Kubernetes! Ele informa ao Kubernetes: “Quero um Pod chamado nginx-pod. Dentro dele, execute um contêiner usando a imagem nginx.”
Crie o Pod
Agora que você tem seu modelo (nginx-pod.yaml), é hora de entregá-lo à equipe de construção: o Kubernetes.
Usamos o comando kubectl apply para fazer isso. Esse comando informa ao Kubernetes: “Este é o estado desejado. Faça com que ele aconteça.”
A expressão estado desejado é uma das ideias centrais do Kubernetes. Você não informa ao sistema cada etapa de baixo nível que deve ser executada. Em vez disso, declara o resultado final que deseja, e os controladores do Kubernetes continuam trabalhando até que a realidade corresponda a essa declaração.
Execute o comando a seguir para criar seu Pod:
kubectl apply -f nginx-pod.yaml
Você deverá ver uma mensagem de confirmação:
pod/nginx-pod created
Ao executar esse comando, você enviou o modelo ao servidor da API do Kubernetes (o Control Plane). Em seguida, o Scheduler encontrou um Node adequado para o seu Pod, e o Kubelet nesse Node começou a baixar a imagem do Nginx para executá-la.
Verifique o status
Nesta etapa, você verificará o andamento do seu novo Pod. A criação de um Pod não é instantânea; leva algum tempo para baixar a imagem do contêiner e iniciar a aplicação.
Este é um ponto importante: kubectl apply geralmente retorna rapidamente porque apenas envia a solicitação. O trabalho real acontece de forma assíncrona dentro do cluster. Por isso, verificar o status é uma etapa normal depois da criação, e não um sinal de que algo está errado.
Para ver o status dos seus Pods, use o comando get:
kubectl get pods
Você verá uma tabela listando seus Pods. Observe a coluna STATUS:
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 15s
STATUS: Este é o campo mais importante.
ContainerCreating: O sistema ainda está baixando a imagem ou iniciando o contêiner.Running: Sucesso! O Pod está ativo e saudável.Pending: O cluster está tentando determinar onde colocar o Pod.ErrorouCrashLoopBackOff: Algo deu errado (por exemplo, a aplicação falhou).
READY: Exibe
1/1, o que significa que 1 dos 1 contêineres definidos no Pod está pronto para receber tráfego.
Se você vir ContainerCreating, aguarde alguns segundos e execute kubectl get pods novamente. Quando o status for Running, seu servidor web Nginx estará ativo.
Inspecione os detalhes
Nesta etapa, você aprenderá a “olhar por dentro”. O comando get forneceu um resumo, mas às vezes é necessário saber exatamente o que está acontecendo, especialmente quando algo dá errado.
O comando describe fornece um relatório detalhado sobre o recurso do Kubernetes.
Para iniciantes, é útil pensar em kubectl get e kubectl describe como dois níveis diferentes de observação. get responde “Qual é o status geral atual?”, enquanto describe responde “O que aconteceu para chegarmos a esse estado?”. Esse histórico de eventos costuma ser o caminho mais rápido para encontrar a causa raiz.
Execute o comando a seguir para inspecionar nginx-pod:
kubectl describe pod nginx-pod
Esse comando exibe muitas informações. Role até o final e procure a seção Events. Ela apresenta, em ordem cronológica, o que aconteceu durante a inicialização do seu Pod:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled ... default-scheduler Successfully assigned default/nginx-pod...
Normal Pulling ... kubelet Pulling image "nginx:latest"
Normal Pulled ... kubelet Successfully pulled image "nginx:latest"...
Normal Created ... kubelet Created container nginx
Normal Started ... kubelet Started container nginx
Esse registro de eventos é o primeiro lugar que você deve consultar ao depurar um problema. Se um Pod ficar preso em Pending ou Error, a seção Events normalmente explicará o motivo (por exemplo, “Insuficient CPU” ou “ImagePullBackOff”).
Agora você criou, verificou e inspecionou seu primeiro Pod do Kubernetes!
Resumo
Neste laboratório, você dominou o conceito de Pod, o bloco de construção fundamental do Kubernetes.
Você conseguiu:
- Escrever um modelo YAML para um Pod do Nginx.
- Implantá-lo no cluster usando
kubectl apply. - Confirmar que ele estava Running usando
kubectl get. - Consultar em detalhes seu histórico de inicialização usando
kubectl describe.
Entender Pods é essencial porque todos os outros conceitos do Kubernetes — Deployments, Services e StatefulSets — estão, em última análise, relacionados ao gerenciamento desses Pods. Agora você está pronto para estudar tópicos mais avançados!


