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
kubectlusará 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.