0%
Introdução ao Kubernetes: Os Fundamentos

Introdução ao Kubernetes: Os Fundamentos

Descubra os conceitos básicos do Kubernetes, sua arquitetura e como ele revoluciona a implantação de aplicações em contêineres.

I

InSkillCoach

· min

O que é o Kubernetes?

O Kubernetes (K8s) é uma plataforma open source projetada para automatizar a implantação, o escalonamento e a operação de aplicações em contêineres. Desenvolvido inicialmente pelo Google, hoje é mantido pela Cloud Native Computing Foundation (CNCF).

O Kubernetes gerencia automaticamente contêineres Docker (ou de outros runtimes de contêineres), agrupando-os em unidades lógicas para facilitar seu gerenciamento e sua descoberta. Ele oferece uma abordagem declarativa para definir o estado desejado da sua infraestrutura.

Por que usar o Kubernetes?

Principais vantagens

  1. Automação: implante e atualize aplicações sem interrupção do serviço.
  2. Escalabilidade: ajuste automaticamente o número de contêineres de acordo com a carga.
  3. Alta disponibilidade: distribua os contêineres por vários nós para evitar pontos únicos de falha.
  4. Portabilidade: execute suas aplicações da mesma forma em diferentes ambientes (desenvolvimento, teste, produção).
  5. Economia: otimize o uso dos recursos e reduza os custos de infraestrutura.

Casos de uso

  • Aplicações de microsserviços
  • Aplicações cloud-native
  • Implantações complexas
  • Ambientes multicloud
  • Aplicações que exigem alta disponibilidade

Arquitetura do Kubernetes

O Kubernetes segue uma arquitetura cliente-servidor com os seguintes componentes:

Componentes do plano de controle (Control Plane)

  1. API Server: ponto de entrada para todos os comandos e comunicações.
  2. etcd: banco de dados distribuído que armazena todos os dados de configuração.
  3. Scheduler: determina quais nós devem executar quais pods.
  4. Controller Manager: gerencia os diversos controladores que regulam o estado do cluster.
  5. Cloud Controller Manager: faz a integração com os serviços de nuvem (load balancers, volumes etc.).

Componentes dos nós (Nodes)

  1. Kubelet: agente que roda em cada nó e garante a comunicação com o plano de controle.
  2. Container Runtime: software que executa os contêineres (Docker, containerd, CRI-O).
  3. Kube-proxy: gerencia as regras de rede e as conexões.
  4. Pods: menor unidade implantável no Kubernetes, contendo um ou mais contêineres.

Conceitos fundamentais

Pods

Um pod é a menor unidade implantável no Kubernetes. Ele pode conter um ou mais contêineres que compartilham:

  • Um namespace de rede
  • Um namespace IPC
  • Um namespace UTS
  • Um namespace PID (opcional)
  • Um armazenamento compartilhado (volumes)

Services

Um service é uma abstração que define um conjunto lógico de pods e uma política para acessá-los. Os tipos de service incluem:

  • ClusterIP: expõe o service em um IP interno do cluster
  • NodePort: expõe o service na porta de cada nó
  • LoadBalancer: expõe o service externamente por meio de um balanceador de carga
  • ExternalName: mapeia o service para um nome DNS externo

Deployments

Um Deployment fornece atualizações declarativas para pods e ReplicaSets. Ele permite:

  • Definir o número de réplicas desejadas
  • Atualizar os pods de forma progressiva
  • Reverter para uma versão anterior em caso de problema

ConfigMaps e Secrets

  • ConfigMaps: armazenam dados não confidenciais na forma de pares chave-valor
  • Secrets: armazenam dados sensíveis (senhas, tokens, chaves)

Volumes

Os volumes permitem persistir os dados dos contêineres. O Kubernetes oferece suporte a muitos tipos de volumes:

  • Volumes locais (emptyDir, hostPath)
  • Volumes em nuvem (AWS EBS, GCP Persistent Disk)
  • Volumes de rede (NFS, Ceph)

Primeiros passos com o Kubernetes

Instalação do minikube

O Minikube é uma ferramenta que permite executar o Kubernetes localmente:

# Installation de minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# Démarrage de minikube
minikube start

Instalação do kubectl

O kubectl é a ferramenta de linha de comando para interagir com o Kubernetes:

# Installation de kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Comandos básicos

# Vérifier la version de kubectl
kubectl version

# Lister les nœuds
kubectl get nodes

# Lister les pods
kubectl get pods

# Lister les services
kubectl get services

# Créer un déploiement
kubectl create deployment hello-world --image=gcr.io/google-samples/hello-app:1.0

# Exposer un service
kubectl expose deployment hello-world --type=LoadBalancer --port=8080

# Décrire un pod
kubectl describe pod <pod-name>

# Voir les logs d'un pod
kubectl logs <pod-name>

# Exécuter une commande dans un pod
kubectl exec -it <pod-name> -- /bin/bash

Conclusão

O Kubernetes se tornou o padrão da indústria para orquestração de contêineres. Sua capacidade de automatizar a implantação, o escalonamento e a operação de aplicações em contêineres faz dele uma ferramenta indispensável para as equipes DevOps modernas.

Nos próximos artigos, vamos explorar tópicos mais avançados, como:

  • A criação de Deployments complexos
  • O gerenciamento de secrets e configurações
  • Monitoramento e logging
  • Segurança no Kubernetes
  • Integração com CI/CD

Fique de olho para aprender mais sobre esses tópicos!

InSkillCoach

Sobre InSkillCoach

Especialista em treinamento e tecnologias

Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.

Certificações:

  • AWS Certified Solutions Architect – Professional
  • Certificações Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.1k
73

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!