Guia Rápido para Iniciar com MicroK8s

Guia Rápido para Iniciar com MicroK8s
Photo by Frank Eiffert / Unsplash

Guia simples e prático de como iniciar no mundo do Kubernetes com MicroK8s.

1. O que é o MicroK8s?

O MicroK8s é uma distribuição leve e otimizada do Kubernetes, projetada para facilitar o desenvolvimento local, testes e até mesmo ambientes de produção em dispositivos pequenos, como o Raspberry Pi.

Ele é interessante porque:

  • É fácil de instalar e roda como um único snap.
  • Consome menos recursos do que um cluster Kubernetes completo.
  • Tem suporte nativo a add-ons úteis como Istio, MetalLB, DNS e outros.

2. Instalando o MicroK8s

O MicroK8s é distribuído via Snap, então basta rodar:

sudo snap install microk8s --classic

Se quiser instalar uma versão específica, por exemplo, a 1.30:

sudo snap install microk8s --classic --channel=1.30/stable

Para garantir que sua conta de usuário tenha permissão de administrar o cluster:

sudo usermod -aG microk8s $USER
newgrp microk8s  # Aplica as mudanças sem precisar reiniciar

Se quiser ativar o autocompletar no Zsh:

echo "source <(microk8s kubectl completion zsh)" >> ~/.zshrc
source ~/.zshrc

3. Iniciando o MicroK8s

Após a instalação, verifique o status:

microk8s status

Caso não esteja rodando, inicie o serviço:

microk8s start

Para parar:

microk8s stop

4. Usando o MicroK8s

O MicroK8s já vem com o kubectl integrado, então você pode rodar:

microk8s kubectl get nodes

Se quiser facilitar, pode criar um alias:

alias kubectl="microk8s kubectl"

Agora, para ver os pods:

kubectl get pods -A

5. Ativando Add-ons

O MicroK8s permite ativar funcionalidades adicionais rapidamente. Alguns úteis:

MetalLB (Load Balancer para ambientes locais):

microk8s enable metallb:192.168.1.100-192.168.1.200

Dashboard do Kubernetes:

microk8s enable dashboard

Para acessar:

microk8s kubectl proxy

E abrir no navegador: http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

DNS (Essencial para resolução de serviços internos):

microk8s enable dns

6. Criando um Deployment

Crie um arquivo deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Aplicando no cluster:

microk8s kubectl apply -f deployment.yaml

Verificando:

microk8s kubectl get pods

7. Expondo um Serviço

Se quiser acessar o Nginx externamente, crie um serviço:

microk8s kubectl expose deployment nginx-deployment --type=NodePort --port=80

Verifique a porta mapeada:

microk8s kubectl get services

Acesse via http://<IP_DO_NODE>:<PORTA_NODEPORT>

Se ativou o MetalLB, pode criar um serviço LoadBalancer:

microk8s kubectl expose deployment nginx-deployment --type=LoadBalancer --port=80

8. Removendo e Reiniciando o MicroK8s

Se quiser resetar tudo:

microk8s reset

Para remover completamente:

sudo snap remove microk8s