Pular para o conteúdo principal

Capítulo 1.5 - Conceitos Fundamentais

Objetivos de Aprendizagem​

Ao final deste capítulo, você será capaz de:

  • Entender o que é um Pod
  • Explicar o papel de um Deployment
  • Compreender os Services e seus tipos
  • Utilizar Namespaces para organização

Introdução​

O Kubernetes utiliza vários conceitos fundamentais que você usará constantemente. Este capítulo apresenta os mais importantes: Pods, Deployments, Services e Namespaces.


Pods: A Unidade Atômica​

Definição​

Um Pod é a menor unidade implantável no Kubernetes.

Características de um Pod​

Pontos-chave:

  • Um Pod = 1 ou mais contêineres
  • Contêineres em um Pod compartilham:
    • O endereço IP
    • Os volumes
    • O namespace de rede
  • Os Pods são efêmeros (podem ser recriados)

Exemplo de Pod​

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80

Deployments: Gerenciamento do Ciclo de Vida​

Definição​

Um Deployment descreve o estado desejado da sua aplicação.

Funcionalidades de um Deployment​

Vantagens:

  • Gerencia as réplicas automaticamente
  • Rolling updates (sem interrupção)
  • Rollback em caso de problema
  • Auto-recuperação

Exemplo de Deployment​

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80

Services: Expondo Aplicações​

Definição​

Um Service expõe um conjunto de Pods como um serviço de rede estável.

Problema resolvido:

  • Os Pods possuem IPs efêmeros
  • Os Pods podem ser recriados
  • Como manter um endereço estável?

Solução: O Service fornece um IP estável e um nome DNS

Tipos de Services​

1. ClusterIP (Padrão)​

  • Serviço interno ao cluster
  • Acessível apenas de dentro do cluster
  • Utiliza o DNS interno

2. NodePort​

  • Expõe em uma porta (30000-32767) de cada node
  • Acessível externamente
  • Porta única em todos os nodes

3. LoadBalancer​

  • Expõe via um load balancer cloud
  • IP público automático
  • Disponível em AWS, Azure, GCP

Exemplo de Service​

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080

Namespaces: Isolamento Lógico​

Definição​

Os Namespaces permitem dividir um cluster em vários ambientes virtuais.

Vantagens dos Namespaces​

Casos de uso:

  • Separar dev/staging/prod
  • Isolar equipes
  • Gerenciar quotas de recursos
  • Aplicar políticas de segurança

Namespaces Padrão​

O Kubernetes cria vários namespaces por padrão:

  • default: Namespace padrão para seus recursos
  • kube-system: Componentes do sistema Kubernetes
  • kube-public: Recursos públicos
  • kube-node-lease: Heartbeats dos nodes

Exemplo de Utilização​

# Criar um namespace
kubectl create namespace production

# Fazer deploy em um namespace
kubectl apply -f deployment.yaml -n production

# Listar os pods em um namespace
kubectl get pods -n production

Relações Entre os Conceitos​

Visão Geral​

Hierarquia:

  1. Namespace: Contém tudo
  2. Deployment: Gerencia os Pods
  3. ReplicaSet: Mantém o número de réplicas
  4. Pods: Executam os contêineres
  5. Service: Expõe os Pods

Resumo do Capítulo​

Neste capítulo, você aprendeu:

Pod: Menor unidade implantável, 1+ contêineres
Deployment: Gerencia o ciclo de vida, réplicas, atualizações
Service: Expõe os Pods com um IP estável
Tipos de Service: ClusterIP, NodePort, LoadBalancer
Namespaces: Isolamento lógico, organização
Relações: Namespace → Deployment → Pods → Service


Próximos Passos​

Agora que você domina os conceitos fundamentais:

Lab 1.1: Primeiro Deploy (mão na massa)
Quiz Módulo 1: Valide seus conhecimentos


Capítulo criado em: Dezembro 2024