Tutoriais

Kubernetes leve com K3s em VPS

Kubernetes leve com K3s em VPS

O Kubernetes é o padrão para orquestrar containers, mas uma instalação tradicional pode ser pesada para um VPS. O K3s é uma distribuição Kubernetes certificada, empacotada em um único binário e pensada para ambientes com menos recursos.

Quando usar Kubernetes em um VPS

Faz sentido para:

  • Aprender Kubernetes em um ambiente real;
  • Equipes que já usam Kubernetes e querem o mesmo fluxo em projetos menores;
  • Várias aplicações que se beneficiam de manifests declarativos, rolling updates e health checks;
  • Clusters pequenos com alguns VPS.

Talvez seja exagero para:

  • Um único site ou aplicação simples — Docker Compose ou um PaaS self-hosted resolvem com menos complexidade.

Requisitos

  • VPS com virtualização completa (ex.: KVM);
  • Para um nó único com algumas aplicações, recomenda-se pelo menos 2 vCPU e 2–4 GB de RAM;
  • Disco rápido — o banco de estado do cluster e as imagens se beneficiam de NVMe.

Instalação

curl -sfL https://get.k3s.io | sh -

Verifique:

sudo k3s kubectl get nodes

Para usar o kubectl sem sudo:

mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
chmod 600 ~/.kube/config
export KUBECONFIG=~/.kube/config
kubectl get pods -A

O K3s já inclui o Traefik como Ingress Controller e um provisionador de armazenamento local.

Firewall

Libere as portas necessárias:

sudo ufw allow 80,443/tcp
# API do Kubernetes: somente do seu IP
sudo ufw allow from SEU_IP to any port 6443 proto tcp

Consulte a documentação do K3s sobre regras de firewall para a rede interna do cluster, especialmente ao usar UFW ou firewalld.

Primeira aplicação

app.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:alpine
          ports:
            - containerPort: 80
          resources:
            requests: { cpu: "50m", memory: "32Mi" }
            limits:   { cpu: "250m", memory: "128Mi" }
---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
    - port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
spec:
  rules:
    - host: app.seudominio.com.br
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web
                port:
                  number: 80
kubectl apply -f app.yaml
kubectl get pods,svc,ingress

Aponte o DNS de app.seudominio.com.br para o VPS e acesse.

HTTPS automático

Instale o cert-manager e crie um ClusterIssuer do Let's Encrypt. Assim, cada Ingress com a anotação correta recebe certificado automaticamente.

Adicionando nós

Em outro VPS:

curl -sfL https://get.k3s.io | K3S_URL=https://IP_DO_SERVIDOR:6443 K3S_TOKEN=TOKEN sh -

O token fica em /var/lib/rancher/k3s/server/node-token no servidor principal.

Boas práticas

  • Defina requests e limits de recursos em todos os pods;
  • Use namespaces para separar ambientes;
  • Faça backup do estado do cluster (k3s etcd-snapshot quando usar etcd embutido, ou do banco SQLite em instalações simples) e dos volumes;
  • Mantenha o K3s atualizado.

Conclusão

O K3s traz o poder do Kubernetes para um VPS de forma leve e prática. Monte seu cluster em VPS-NVME-BR da VittHost, com NVMe e servidores no Brasil.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS