Domine Kubernetes: Instalação, Ambientes de Prática e Gerenciamento Eficiente de Clusters

Domine Kubernetes: Instalação, Ambientes de Prática e Gerenciamento Eficiente de Clusters

Instalação e ambientes de prática no Kubernetes

Ao iniciar a jornada no Kubernetes, escolher o ambiente correto para praticar e desenvolver suas habilidades é essencial. Existem diversas opções, que variam em complexidade, recursos, custo e adequação ao objetivo. Entender como trabalhar com múltiplos clusters usando contextos e o arquivo kubeconfig simplifica muito o gerenciamento. Nesta matéria, você conhecerá as ferramentas mais populares para criar clusters Kubernetes locais e em nuvem, além de boas práticas para organizar seu laboratório.


Visão geral: Minikube, Kind, k3s, RKE2 e clusters gerenciados (EKS/GKE/AKS)

Os ambientes Kubernetes podem variar de uma única máquina local a clusters totalmente gerenciados na nuvem, adequando-se a diferentes necessidades de aprendizado e produção.

Minikube

  • O que é: ferramenta que cria um cluster Kubernetes de nó único na sua máquina (Windows, macOS ou Linux).
  • Uso ideal: aprendizado, testes rápidos, desenvolvimento e demonstrações. Não deve ser usado em produção.
  • Principais características:
    • Instalação simples.
    • Executa dentro de uma VM (VirtualBox, HyperKit, etc.).
    • Permite escolher a versão do Kubernetes.
    • Suporta addons como Ingress, Dashboard, métricas, entre outros.
  • Instalação e início:
# Linux (via snap)
sudo snap install minikube --classic

# Inicia o cluster
minikube start

# Verifica o status
minikube status

# Lista os pods de todos os namespaces
kubectl get pods -A

Kind (Kubernetes IN Docker)

  • O que é: cria clusters Kubernetes usando contêineres Docker como nós.
  • Uso ideal: testes em pipelines CI/CD, desenvolvimento local e ambientes efêmeros.
  • Características:
    • Criação e destruição de clusters em segundos.
    • Suporte a multi‑node.
    • Ideal para integração contínua.
  • Como usar:
# Baixa o binário (Linux)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# Cria um cluster padrão
kind create cluster

# Verifica os nós
kubectl get nodes

k3s

  • O que é: distribuição “leve” de Kubernetes, desenvolvida pela Rancher Labs.
  • Uso ideal: dispositivos edge, IoT, clusters pequenos, desenvolvimento e produção em ambientes com recursos limitados.
  • Características:
    • Menor consumo de CPU/memória que o Kubernetes tradicional.
    • Pode usar SQLite ao invés de etcd, reduzindo a complexidade.
    • Instalação em uma única linha.
  • Instalação:
curl -sfL https://get.k3s.io | sh -

# Verifica o status dos nós
sudo k3s kubectl get nodes

# Opcional: alias para usar o kubectl padrão
alias kubectl='sudo k3s kubectl'

RKE2 (Rancher Kubernetes Engine 2)

O que é: distribuição CNCF de Kubernetes focada em segurança e automação, mantida pela Rancher.

Uso ideal: clusters de produção on‑premise que exigem conformidade e políticas rígidas.

Características:

  • Cumpre padrões de segurança avançados (CIS Benchmarks).
  • Suporte a configurações customizadas e extensões.
  • Projetado para ambientes de produção de grande escala.

Instalação: envolve etapas mais detalhadas, como download do instalador, configuração de arquivos YAML e criação de serviços systemd, e costuma ser adotada em servidores dedicados. Recomenda-se consultar a documentação oficial para um passo a passo detalhado.

Clusters gerenciados em nuvem (EKS, GKE, AKS)

Amazon EKS, Google GKE e Azure AKS são serviços onde o provedor cuida do control plane e das atualizações, enquanto você gerencia apenas os workloads.

  • Uso ideal: ambientes de produção, alta escalabilidade e integração profunda com serviços nativos da nuvem.
  • Principais benefícios:
    • Alta disponibilidade incorporada.
    • Gestão simplificada do plano de controle.
    • Integrações prontas com IAM, redes, monitoramento, etc.
    • Modelo de pagamento “pay‑as‑you‑go”.
  • Exemplo – criar um cluster EKS com o eksctl:
eksctl create cluster \
  --name my-cluster \
  --region us-east-1 \
  --nodes 3

Contextos e kubeconfig

Ao lidar com vários clusters (local, teste, produção), o Kubernetes utiliza o arquivo kubeconfig para armazenar credenciais, endpoints e informações de namespace.

O arquivo kubeconfig

  • Local padrão: ~/.kube/config.
  • Pode conter múltiplas definições de clusters, users e contexts.
  • Um contexto determina qual cluster, usuário e namespace o kubectl usará por padrão.

Comandos úteis para manipular contextos

# Lista todos os contextos definidos
kubectl config get-contexts

# Exibe o contexto ativo
kubectl config current-context

# Troca para outro contexto
kubectl config use-context nome-do-contexto

# Cria um novo contexto
kubectl config set-context novo-contexto \
  --cluster=nome-do-cluster \
  --user=usuario \
  --namespace=default

Esses comandos permitem alternar rapidamente entre ambientes sem editar arquivos manualmente, tornando a experiência mais fluida e segura.


Boas práticas para laboratório (namespaces, quotas)

Em um ambiente de laboratório é importante organizar recursos e evitar que um usuário consuma tudo.

Namespaces

  • Divisões lógicas dentro do cluster que isolam recursos.
  • Use‑os para separar projetos, times ou estágios (dev, test, prod).
kubectl create namespace dev
kubectl create namespace test

Para definir o namespace padrão da sessão atual:

kubectl config set-context --current --namespace=dev

Ou, especificar o namespace em cada comando:

kubectl get pods -n test

ResourceQuota

  • Limita a quantidade de recursos (CPU, memória, número de pods, PVCs etc.) que um namespace pode consumir.
  • Essencial para simular limites reais e controlar custos em clusters compartilhados.
apiVersion: v1
kind: ResourceQuota
metadata:
  name: quota-dev
  namespace: dev
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi

Aplicação da quota:

kubectl apply -f resourcequota.yaml

Por que usar quotas?

  • Simulam políticas de produção.
  • Evita o consumo excessivo de recursos.
  • Facilita o controle de custos em ambientes de nuvem.

Conclusão

Existem diversas opções para praticar Kubernetes, atendendo a diferentes perfis e necessidades:

Ferramenta Uso ideal Observações
Minikube Desenvolvimento local Instalação simples, requer VM
Kind Testes rápidos, CI Roda em containers, muito ágil
k3s Edge, ambientes leves Kubernetes completo, baixo overhead
RKE2 Produção on‑premise, segurança Configuração avançada, foco em conformidade
EKS / GKE / AKS Produção em nuvem Totalmente gerenciados, alta disponibilidade

Dominar contextos no kubeconfig permite alternar entre clusters sem esforço, e adotar namespaces e ResourceQuotas traz organização e controle, evitando surpresas desagradáveis.

No próximo passo, exploraremos a criação de aplicações e serviços dentro desses ambientes, aproveitando os recursos nativos do Kubernetes para garantir escalabilidade e resiliência.