Introdução aos Pods no Kubernetes

Em Kubernetes, os pods representam a menor unidade computacional que pode ser criada e implantada. Cada pod pode conter um ou mais contêineres que compartilham o mesmo espaço de rede, armazenamento e outras especificações.


É normal um pod conter vários contêineres?

Sim, é comum e poderoso utilizar vários contêineres em um único pod. Os contêineres dentro de um pod compartilham:

  • Namespace de rede: Permite comunicação interna via localhost.
  • Volumes: Para compartilhamento de dados.

Exemplo de uso:

Um contêiner de aplicativo principal pode ser acoplado a um contêiner “sidecar” responsável por funções como monitoramento ou registro de logs.


Criação e exclusão de pods

Para criar um pod simples:

kubectl run NOME-DO-POD --image nginx --port 80

Para excluir um pod:

kubectl delete pods NOME-DO-SEU-POD

Visualize os pods existentes:

kubectl get pods

Comandos útéis para listar e investigar pods

  1. Listar pods:kubectl get pods
  2. Detalhar informações de um pod específico:kubectl describe pod NOME-DO-POD

Criando um pod multicontainer com manifesto YAML

Gerando um manifesto YAML:

kubectl run girus --image alpine --dry-run=client -o yaml > pod.yaml

Criando o pod com o manifesto:

kubectl apply -f pod.yaml

Se precisar editar o arquivo:

vim pod.yaml

Se o pod for alterado, remova-o antes de aplicar novamente:

kubectl delete -f pod.yaml
kubectl apply -f pod.yaml

Diagnóstico de erros

Caso o pod não inicie corretamente:

  1. Verifique o status:kubectl get pods
  2. Investigue os detalhes:kubectl describe pod NOME-DO-POD
  3. Consulte os logs:kubectl logs NOME-DO-POD kubectl logs NOME-DO-POD -c NOME-DO-CONTAINER

Limitando consumo de recursos (CPU e Memória)

Adicione limites no manifesto YAML:

resources:
  limits:
    cpu: "0.5"
    memory: "128Mi"
  requests:
    cpu: "0.3"
    memory: "64Mi"

Aplique o manifesto:

kubectl apply -f pod-limitado.yaml

Confirme os limites:

kubectl describe pod NOME-DO-POD

Configurando um volume EmptyDir

Volumes EmptyDir permitem compartilhamento temporário de dados entre contêineres no mesmo pod.

Exemplo no manifesto YAML:

volumes:
  - name: shared-volume
    emptyDir: {}
containers:
  - name: app-container
    image: nginx
    volumeMounts:
      - mountPath: /app-data
        name: shared-volume
  - name: sidecar-container
    image: busybox
    command: ["sleep", "3600"]
    volumeMounts:
      - mountPath: /sidecar-data
        name: shared-volume

Aplique o manifesto:

kubectl apply -f pod-emptydir.yaml

Verificação do volume:

  1. Inspecione o pod:kubectl describe pod NOME-DO-POD
  2. Entre no pod para explorar o volume:kubectl exec -ti NOME-DO-POD -- bash ls /app-data

Com essas informações, você está pronto para criar e gerenciar pods no Kubernetes de forma eficiente.

Blog

Julio Cesar

Julio Cesar é Pós Graduado em desenvolvimento Full Stack e cursa Pós Graduação em Arquitetura e Desenvolvimento Java pela FIAP.


Publicado

em

por

Etiquetas:

Comentários

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *