Por qué elegir K3s en lugar de Kubernetes completo en un VPS
Kubernetes estándar incorpora varios componentes pesados: etcd, kube-apiserver, kube-controller-manager y kube-scheduler se ejecutan en paralelo y consumen fácilmente de 2 a 4 GB de RAM al arrancar, sin contar sus aplicaciones. En un VPS de 2 GB no queda prácticamente nada para las cargas de trabajo reales. K3s resuelve este problema agrupando todos los componentes del control plane en un único binario, sustituyendo etcd por SQLite en los clústeres pequeños y eliminando las funciones que casi nunca se usan. El resultado: un clúster Kubernetes plenamente certificado por la CNCF, compatible con kubectl y helm, que se instala en menos de dos minutos y consume unos 512 MB para un nodo agente y alrededor de 1 GB para un nodo servidor.
Las ventajas concretas de K3s
- Binario único de 60 MB que incluye el runtime
containerd, CoreDNS y el gestor de almacenamiento local, sin dependencias de sistema adicionales. - Traefik integrado como ingress controller por defecto, listo para terminar el TLS sin configuración adicional.
- Compatibilidad nativa con
kubectlyhelmnada más terminar la instalación, sin adaptaciones. - Actualización simplificada: en la mayoría de los casos basta con sustituir el binario y reiniciar el servicio.
- Certificación CNCF v1.32 que garantiza la conformidad con la API estándar de Kubernetes.
Requisitos previos antes de empezar
Para seguir esta guía necesita un VPS con un mínimo de 2 GB de RAM y 1 vCPU bajo Ubuntu 22.04 o Debian 12. El puerto 6443 debe estar abierto en su cortafuegos para que kubectl pueda comunicarse con la API del clúster desde su máquina local. Si desea exponer servicios en HTTPS, prepare un nombre de dominio que apunte a la IP de su VPS, por ejemplo su-dominio.com. Una conexión SSH con permisos de root o sudo completa la lista.
De la instalación a su primera aplicación en HTTPS
Aprovisionar el VPS y abrir los puertos necesarios
Conéctese por SSH a su VPS y autorice los puertos 80, 443 y 6443 en su cortafuegos. En Ubuntu con ufw:
ufw allow 80/tcp,ufw allow 443/tcp,ufw allow 6443/tcp. Compruebe que el sistema está actualizado conapt update && apt upgrade -yantes de continuar.Instalar K3s con un solo comando
Ejecute el script oficial:
curl -sfL https://get.k3s.io | sh -. El script descarga el binario, instala un servicio systemd llamadok3sy arranca el control plane. Al terminar la instalación, compruebe el estado del servicio consystemctl status k3s. El nodo está listo cuando su estado pasa aReady.Configurar kubectl en local
En su máquina local, copie el archivo kubeconfig desde su VPS:
scp [email protected]:/etc/rancher/k3s/k3s.yaml ~/.kube/config. Después sustituya127.0.0.1por la IP pública de su VPS en ese archivo. Pruebe la conexión conkubectl get nodes: debe ver su nodo único en estadoReady.Desplegar una aplicación de ejemplo
Cree un archivo
app.yamlcon un Deployment y un Service de tipo ClusterIP que exponga su aplicación en el puerto 80. Aplíquelo conkubectl apply -f app.yamly compruebe después que el pod arranca conkubectl get pods.Configurar Traefik para el ingress HTTPS
K3s incluye Traefik como IngressController. Cree un objeto Ingress que apunte al Service del paso anterior con la anotación
kubernetes.io/ingress.class: traefiky su hostsu-dominio.com. Aplíquelo conkubectl apply -f ingress.yamly compruebe el acceso HTTPS en su navegador.
En producción, desactive el uso del token por defecto almacenado en /var/lib/rancher/k3s/server/node-token para las conexiones no supervisadas. Utilice k3s token para generar tokens de vida útil limitada al añadir nodos worker. Active también los audit logs de Kubernetes pasando --kube-apiserver-arg=audit-log-path=/var/log/k3s-audit.log al arrancar el servicio.
K3s como puerta de entrada a Kubernetes completo
K3s ocupa un lugar lógico entre Docker Compose, adecuado para aplicaciones sencillas en un solo host, y un clúster Kubernetes completo, que exige una infraestructura dedicada. Le permite adquirir los reflejos de Kubernetes —Deployments, Services, Ingress, ConfigMaps, secrets— en un entorno de tamaño real, sin las limitaciones de un clúster multinodo. Cuando su tráfico o su equipo crezcan, la migración hacia un clúster upstream será directa: los manifiestos YAML y los charts de helm que haya escrito funcionarán sin modificaciones. Para profundizar en la configuración de Traefik con K3s, consulte nuestra guía sobre el despliegue con Traefik.