Sobes.tech
Junior

Qual é a diferença entre um pod e um contêiner?

sobes.tech IA

Resposta da IA

O contêiner é um processo isolado ou um grupo de processos que inclui dependências, bibliotecas e ficheiros de configuração necessários para executar uma aplicação.

No Kubernetes, um (Pod) é a menor unidade que pode ser implantada. É uma abstração sobre um ou vários contêineres que funcionam num mesmo nó e partilham um espaço de rede e recursos de armazenamento. Os contêineres dentro de um mesmo pod estão sempre colocados juntos, planeados em conjunto e partilham um ambiente de execução.

Principais diferenças:

  • Nível de abstração: O contêiner é um ambiente isolado para uma única aplicação ou processo. O pod é um grupo de um ou vários contêineres que trabalham juntos como uma única unidade.
  • Implantação: Os contêineres são implantados dentro de pods no Kubernetes. Não é possível implantar um contêiner individual diretamente no Kubernetes.
  • Espaço de rede: Os contêineres dentro de um mesmo pod usam um mesmo espaço de rede (IP e portas). Os contêineres em diferentes pods têm espaços de rede diferentes.
  • Armazenamento: Os contêineres dentro de um mesmo pod podem partilhar volumes para armazenar dados.
  • Ciclo de vida: Os pods gerem o ciclo de vida dos seus contêineres. Se um contêiner num pod terminar, o pod pode reiniciá-lo ou terminar por si, dependendo da política de reinício.
# Exemplo de um Pod com um único contêiner
apiVersion: v1
kind: Pod
metadata:
  name: meu-pod-unico-contêiner
spec:
  containers:
  - name: meu-contêiner-app
    image: nginx:latest
    ports:
    - containerPort: 80
# Exemplo de um Pod com dois contêineres
apiVersion: v1
kind: Pod
metadata:
  name: meu-pod-multi-contêiner
spec:
  containers:
  - name: contêiner-principal
    image: minha-app:latest
    ports:
    - containerPort: 8080
  - name: contêiner-secundário
    image: fluentd:latest
    volumeMounts:
    - name: logs-app
      mountPath: /var/log/app
  volumes:
  - name: logs-app
    emptyDir: {} # Exemplo de volume comum
Característica Contêiner Pod
Nível de abstração Ambiente isolado para um processo/aplicação Grupo de um ou vários contêineres
Implantação Dentro de um pod Unidade de implantação independente no Kubernetes
Espaço de rede Próprio (Docker) ou comum com o pod (k8s) Comum a todos os contêineres no pod
Armazenamento Próprio ou comum com o pod através de volumes Comum aos contêineres através de volumes
Gestão Gerido pelo ambiente de execução ou pelo pod Gerido pelo Control Plane do Kubernetes
Escalabilidade Escala ao nível de contêineres Escala ao nível de pods