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
- Listar pods:
kubectl get pods
- 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:
- Verifique o status:
kubectl get pods
- Investigue os detalhes:
kubectl describe pod NOME-DO-POD
- 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:
- Inspecione o pod:
kubectl describe pod NOME-DO-POD
- 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
-
O Padrão Abstract Factory e o Mundo de World of Warcraft
Horda e Aliança Quando escrevi meu primeiro artigo, “O Padrão State e o Druida de World of Warcraft”, tive a ideia de criar vários artigos explicando os padrões…
-
Java: Independência de Plataforma e Ferramentas Essenciais para Desenvolvimento
A linguagem Java possui diversas características, entre elas, a independência de plataforma. Isso significa que seus programas não são compilados para um hardware específico, mas como bytecodes, uma…
-
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…
-
Entendendo o que são containers e Kubernetes
O que você aprenderá neste artigo Este artigo tem como objetivo ensinar o básico sobre Kubernetes e como realizar sua instalação em sistemas Linux. No final desta leitura,…
-
Entendendo o Padrão Strategy com um Exemplo de Locadora de Carros
No universo da engenharia de software, os padrões de projeto são fundamentais para criar soluções escaláveis, reutilizáveis e fáceis de manter. Entre os diversos padrões documentados, o Strategy…
-
O Padrão State e o Druida de World Of Warcraft.
World of Warcraft é um MMORPG criado pela Blizzard e atualmente é disponibilizado pela Activision Blizzard. Os jogadores podem escolher classes que desempenham uma das três funções dentro…
Julio Cesar
Julio Cesar é Pós Graduado em desenvolvimento Full Stack e cursa Pós Graduação em Arquitetura e Desenvolvimento Java pela FIAP.
Deixe um comentário