k3s
Distribución ligera de Kubernetes sobre la que corre todo el cluster.
Resumen
k3s es la distro de Kubernetes elegida (frente a Talos y Kind). Cluster de 3
nodos (1 server/control-plane + 2 agents) sobre las VMs de Proxmox, aprovisionadas
con Terraform y bootstrapadas con Ansible.
Estado
| Campo |
Valor |
| Estado |
Operativo |
| Argo CD Application |
— (se gestiona con Ansible, no Argo CD) |
| Namespace |
— (componente del cluster) |
Despliegue
| Campo |
Valor |
| Método |
instalador oficial get.k3s.io (playbook Ansible k3s/ansible) |
| Versión |
v1.36.4+k3s1 |
| Nodos |
kobe (server), kyrie/kawhi (agents) |
| Config |
k3s/ansible/inventory/group_vars/all.yml |
| Flags server |
--disable servicelb --disable traefik --write-kubeconfig-mode 0644 |
Red
| Campo |
Valor |
| Nodos |
192.168.20.10 (kobe), .11 (kyrie), .12 (kawhi) |
| API server |
https://192.168.20.10:6443 |
| VLAN |
20 (Servidores) |
| Puertos |
6443 (API), 8472 (flannel VXLAN), 10250 (kubelet) |
Acceso y usuarios
- Acceso administrativo vía kubeconfig:
k3s/ansible/.kubeconfig (gitignored).
- SSH a los nodos como
ubuntu (clave inyectada por cloud-init).
Configuración
- Container runtime: containerd (
2.3.4-k3s1.36).
- CNI: flannel (por defecto de k3s).
servicelb y traefik empaquetados deshabilitados (se usan MetalLB y Traefik propios).
Almacenamiento
- El storage del cluster lo aporta Longhorn (StorageClass
longhorn, en
despliegue). El estado del propio k3s vive en las VMs de Proxmox.
Dependencias
- Depende de: Terraform (VMs), Proxmox.
- Usado por: todo el resto (MetalLB, Traefik, Argo CD, …).
Backup y recuperación
- El kubeconfig se regenera con
k3s/rotate-certs.sh. Ver docs/runbooks/k3s-bootstrap.md.
Monitorización
- Pendiente (kube-prometheus-stack).
Referencias
Notas / TODO
- Automatizar el bootstrap en GitHub Actions (hoy es manual con Ansible).
- CoreDNS
import glob warnings: arreglado creando el ConfigMap coredns-custom
(placeholders .server/.override) vía el role coredns-custom de Ansible.
- Ruido de logs (catalogado): en
k3s.service/k3s-agent.service (journald)
aparecen Proxy error: write failed: io: read/write on closed pipe y
Failed to list /registry/events/ ... mvcc: required revision has been compacted
(reflector de events tras compactar etcd). Ambos cosméticos. Ver runbook del operador.