Pular para o conteúdo principal

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​

  1. Capítulo 1.1 - O que é Kubernetes?
  2. Capítulo 1.2 - Por que Kubernetes?
  3. Capítulo 1.3 - História e Evolução
  4. Capítulo 1.4 - Arquitetura de Alto Nível
  5. Capítulo 1.5 - Conceitos Fundamentais

Parte 2: Instalação e Prática​

  1. Capítulo 1.6 - Instalação e Configuração

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:

  1. 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
  2. Escalonamento (Scaling)

    • Aumento/redução automática do número de instâncias
    • Adaptação à carga de trabalho
    • Otimização do uso de recursos
  3. 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
  4. Descoberta de Serviços

    • Comunicação automática entre serviços
    • Balanceamento de carga integrado
    • Gerenciamento interno de DNS
  5. 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:

  1. Microsserviços

    • Aplicações compostas por muitos pequenos serviços
    • Comunicação entre serviços
    • Deploy independente de cada serviço
  2. Aplicações Cloud-Native

    • Aplicações desenhadas para o cloud
    • Escalonamento automático
    • Resiliência e auto-recuperação
  3. DevOps e CI/CD

    • Deploys automatizados
    • Rollback fácil em caso de problema
    • Múltiplos ambientes (dev, staging, prod)
  4. 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:

  1. API Server

    • Ponto de entrada único para todas as interações
    • Valida e processa as requisições
    • Expõe a API REST do Kubernetes
  2. etcd

    • Banco de dados distribuído
    • Armazena o estado do cluster
    • Fonte única de verdade
  3. Controller Manager

    • Executa os loops de controle
    • Monitora o estado desejado vs. estado real
    • Toma ações corretivas
  4. 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:

  1. kubelet

    • Agente que comunica com o API Server
    • Gerencia os pods no node
    • Monitora a saúde dos contêineres
  2. kube-proxy

    • Gerencia o networking no nível do node
    • Implementa os Services (load balancing)
    • Gerencia regras de rede
  3. 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