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-snapshotquando 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.