MÓDULO 1 - Introdução ao Kubernetes
Visão Geral
Este primeiro módulo apresenta o Kubernetes, a plataforma de orquestração de contêineres mais utilizada no mundo. Você descobrirá por que o Kubernetes existe, como ele funciona em alto nível e quais são os conceitos fundamentais que você usará ao longo deste curso.
Objetivos de Aprendizagem
Ao final deste módulo, você será capaz de:
- Explicar o que é Kubernetes e por que ele é essencial
- Compreender a evolução da conteinerização para a orquestração
- Identificar os principais componentes de um cluster Kubernetes
- Distinguir o Control Plane dos Worker Nodes
- Utilizar kubectl para interagir com um cluster
- Iniciar um cluster local para prática
Duração Estimada
Teoria: 3-4 horas
Prática: 2-3 horas
Total: 5-7 horas
Tabela de Conteúdos
Parte 1: Introdução e Conceitos
- Capítulo 1.1 - O que é Kubernetes?
- Capítulo 1.2 - Por que Kubernetes?
- Capítulo 1.3 - História e Evolução
- Capítulo 1.4 - Arquitetura de Alto Nível
- Capítulo 1.5 - Conceitos Fundamentais
Parte 2: Instalação e Prática
Labs Práticos
Validação
O que é Kubernetes?
Kubernetes (frequentemente abreviado como K8s) é uma plataforma open-source de orquestração de contêineres que automatiza o deploy, o escalonamento e a gestão de aplicações conteinerizadas.
Definição Simples
Imagine que você tem várias aplicações (microservices) que precisam:
- Rodar em vários servidores
- Ser reiniciadas automaticamente se travarem
- Ser escaladas conforme a carga
- Comunicar-se entre si de forma confiável
O Kubernetes faz tudo isso automaticamente para você.
Analogia: O Maestro
Assim como um maestro coordena os músicos, o Kubernetes coordena seus contêineres para que trabalhem juntos em harmonia.
Principais Características
O Kubernetes oferece:
-
Orquestração Automática
- Deploy e reinício automáticos
- Distribuição dos contêineres nas máquinas disponíveis
- Gestão do ciclo de vida das aplicações
-
Escalonamento (Scaling)
- Aumento/redução automática do número de instâncias
- Adaptação à carga de trabalho
- Otimização do uso de recursos
-
Auto-recuperação (Self-Healing)
- Reinício automático de contêineres que travam
- Substituição de contêineres com falha
- Redistribuição em caso de falha de máquina
-
Descoberta de Serviços
- Comunicação automática entre serviços
- Balanceamento de carga integrado
- Gerenciamento interno de DNS
-
Gestão de Configuração
- Armazenamento centralizado de configuração
- Gestão de secrets de forma segura
- Deploys declarativos
Por que Kubernetes?
Os Desafios Sem Kubernetes
Antes do Kubernetes, fazer deploy de aplicações conteinerizadas era complexo:
Problemas:
- Gestão manual dos contêineres
- Sem reinício automático
- Escalonamento complexo e manual
- Sem balanceamento de carga integrado
- Configuração dispersa
- Sem service discovery
As Vantagens Com Kubernetes
Vantagens:
- Orquestração automática completa
- Auto-recuperação e alta disponibilidade
- Escalonamento horizontal e vertical
- Balanceamento de carga integrado
- Service discovery automático
- Gestão centralizada de configuração
Casos de Uso Típicos
O Kubernetes é ideal para:
-
Microsserviços
- Aplicações compostas por muitos pequenos serviços
- Comunicação entre serviços
- Deploy independente de cada serviço
-
Aplicações Cloud-Native
- Aplicações desenhadas para o cloud
- Escalonamento automático
- Resiliência e auto-recuperação
-
DevOps e CI/CD
- Deploys automatizados
- Rollback fácil em caso de problema
- Múltiplos ambientes (dev, staging, prod)
-
Multi-cloud e Hybrid Cloud
- Deploy em múltiplas clouds
- Portabilidade entre ambientes
- Evitar vendor lock-in
História e Evolução
A Evolução da Conteinerização
Google e Borg
O Kubernetes foi criado pelo Google, que usava internamente um sistema chamado Borg para orquestrar milhões de contêineres.
Borg (2003-2015):
- Sistema proprietário do Google
- Gerenciava centenas de milhares de jobs
- Base da experiência para o Kubernetes
Kubernetes (2014):
- Versão open-source inspirada no Borg
- Nomeado a partir da palavra grega "κυβερνήτης" (piloto, leme)
- K8s = K + 8 letras + s
Adoção e Crescimento
Números-chave:
- Utilizado por milhões de organizações
- Mais de 100.000 commits no GitHub
- Mais de 3.000 contribuidores
- Adotado por todas as grandes empresas de tecnologia
Arquitetura de Alto Nível
Visão Geral de um Cluster
Um cluster Kubernetes é composto por dois tipos de máquinas:
Control Plane (Master)
O Control Plane é o "cérebro" do cluster. Ele toma todas as decisões e gerencia o estado do cluster.
Componentes do Control Plane:
-
API Server
- Ponto de entrada único para todas as interações
- Valida e processa as requisições
- Expõe a API REST do Kubernetes
-
etcd
- Banco de dados distribuído
- Armazena o estado do cluster
- Fonte única de verdade
-
Controller Manager
- Executa os loops de controle
- Monitora o estado desejado vs. estado real
- Toma ações corretivas
-
Scheduler
- Decide em qual node colocar os novos pods
- Considera recursos e restrições
- Otimiza a distribuição
Worker Nodes
Os Worker Nodes executam as aplicações. Cada node contém:
Componentes dos Worker Nodes:
-
kubelet
- Agente que comunica com o API Server
- Gerencia os pods no node
- Monitora a saúde dos contêineres
-
kube-proxy
- Gerencia o networking no nível do node
- Implementa os Services (load balancing)
- Gerencia regras de rede
-
Container Runtime
- Executa os contêineres (Docker, containerd, CRI-O)
- Gerencia imagens e contêineres
- Interface padronizada (CRI)
Conceitos Fundamentais
Pods
Um Pod é a menor unidade de deploy no Kubernetes. É um grupo de um ou mais contêineres que compartilham recursos.
Características:
- Um Pod = um 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)
Deployments
Um Deployment descreve o estado desejado da sua aplicação (quantos réplicas, qual imagem, etc.).
Funcionalidades:
- Gerenciamento de réplicas (número de instâncias)
- Rolling updates (atualizações sem downtime)
- Rollback em caso de problema
- Auto-recuperação
Services
Um Service expõe um conjunto de Pods como um serviço de rede estável.
Tipos de Services:
- ClusterIP: Serviço interno ao cluster
- NodePort: Expõe em uma porta de cada node
- LoadBalancer: Expõe via load balancer do cloud
- ExternalName: Alias para um serviço externo
Namespaces
Os Namespaces permitem dividir um cluster em vários ambientes virtuais.
Vantagens:
- Isolamento lógico
- Separação de ambientes
- Gestão de quotas de recursos
- Controle de acesso (RBAC)
Ecossistema Kubernetes
O Kubernetes não está sozinho. Ele faz parte de um ecossistema rico de ferramentas e projetos.
Projetos CNCF
A Cloud Native Computing Foundation (CNCF) hospeda diversos projetos relacionados ao Kubernetes:
- Kubernetes: Orquestração
- Prometheus: Monitoramento
- Helm: Gerenciamento de pacotes
- Istio: Service mesh
- Fluentd: Logging
- etcd: Armazenamento distribuído
- E muitos outros...
Resumo do Módulo
Neste módulo, você aprendeu:
Kubernetes é uma plataforma de orquestração de contêineres
Ele automatiza o deploy, o escalonamento e a gestão das aplicações
Um cluster é composto por um Control Plane e Worker Nodes
Os Pods são a menor unidade de deploy
Os Deployments gerenciam o ciclo de vida das aplicações
Os Services expõem as aplicações de forma estável
Os Namespaces permitem isolamento lógico
Próximos Passos
Agora que você entende os conceitos básicos, está pronto para:
Módulo 2: Arquitetura detalhada e componentes do Kubernetes
Módulo 3: Pods e Deployments na prática
Recursos Complementares
Módulo criado em: Dezembro 2024