Saltar a contenido

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

  • https://docs.k3s.io/

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.