O que são os pods no kubernetes ?
É um contexto compartilhado dividindo o mesmo isolamento tanto lógico quanto físico, também é semelhante a um conjunto de containers com volumes e namespaces compartilhados.
Exemplo de criação de um Pod no kubernetes:
Utilizando a última versão do nginx
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Para rodar o exemplo acima basta utilizar o seguinte comando no mesmo diretório do arquivo:
kubectl apply -f {nome_do_seu_arquivo}
Esse caso de criação de Pod é somente usado para estudos dentro do kubernetes, geralmente você não cria os Pods diretamente, você pode usar outros recursos como Deployment/ReplicasSet ou para casos de rastrear o estado use StatefulSet.
Como se trabalhar com Pods.
Nós temos duas principais maneiras de se trabalhar com Pods:
1/1 - Um Pod para um container
a maneira mais comum de se trabalhar.
Exemplo: Pod é como um wrapper(embrulho) no container, Kubernetes gerencia Pods em vez de gerenciar os containers diretamente.
1/x - Um Pod para múltiplos containers
Para casos onde você tem uma aplicação fortemente acoplada, que precisa compartilhar seus recursos. Exemplo: Um container atende os dados de um Volume enquanto outro container é utilizado para atualizar esses dados.
Pods são na maioria das vezes projetados para serem efêmeros e descartáveis. Os Pods permanecerão ativos até que:
- Termine a execução.
- O Pod seja excluído.
- O Pod seja removido por falta de recursos
- Ou caso o node falhe.
Um Pod não é um processo, mas um ambiente para execução de containers, um Pod persiste até ser excluído por motivos listados acima. Por isso reiniciar um container é diferente de reiniciar um Pod.
Conclusão
Para concluir pense assim, um Pod é um ambiente para execução de containers, olhe a imagem a seguir.
Basicamente, containers do mesmo Pod podem se comunicar através do localhost por compartilhar os mesmo recursos de rede, agora para acessar outros Pods precisamos do seus IP's e portas dos containers.
Esse foi minha explicação sobre os Pods. Fique atento para os posts explicando os recursos como Deployment, ReplicasSet e StatefulSet.
Referências:
Top comments (1)
Excelente texto, Daniel.
Parabéns!!!