🧠 ¿Qué narices es Kubernetes y por qué debería importarme?

Antes de lanzarnos a instalar cosas a lo loco, pongamos algo de contexto.

Kubernetes (o “k8s” para los amigos) es el orquestador de contenedores más famoso del mundo.
Piensa en Kubernetes como un superadministrador: mueve tus aplicaciones, las escala, las cura si se rompen, y las mantiene disponibles.
Es como tener un ejército de robots trabajando para ti… pero gratis (salvo el coste emocional de instalarlo 😅).

En este artículo vamos a montar Kubernetes paso a paso, comando a comando, y te voy explicando para qué sirve cada cosa, en un lenguaje claro y sin dramas 😎.


📦 Paso 1: Preparando la máquina (el “mise en place” de Kubernetes)

Primero de todo, como buenos profesionales, actualizamos el sistema:

sudo apt update -y && sudo apt dist-upgrade -y

🎯 ¿Qué hace esto?
Actualiza los paquetes de Ubuntu para que no tengamos problemas luego instalando versiones viejas.

Instalamos algunas herramientas básicas que nos van a hacer falta:

sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common vim bash-completion locate net-tools command-not-found

🎯 ¿Por qué?
Estos paquetes permiten descargar cosas seguras, manejar llaves GPG y repos externos (esenciales para añadir Kubernetes después). Más unos adicionales que siempre instalo en mis máquinas


🌉 Paso 2: Activar IP Forwarding (o “dejad pasar los paquetes, por favor”)

Kubernetes necesita que el tráfico de red pueda circular libremente entre contenedores.
Así que toca darle permiso al sistema:

sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF

Aplicamos cambios:

sudo sysctl --system

🎯 ¿Qué hemos hecho?
Hemos dicho a Linux: “Oye, no seas rata, deja que los paquetes de red crucen los puentes y viajen felices”.
Esto es VITAL para Kubernetes y Cilium.


📦 Paso 3: Instalando containerd (el motor bajo el capó)

Kubernetes no ejecuta contenedores directamente, necesita un motor. Vamos a usar containerd, que es rápido y fiable:

sudo apt install -y containerd

Luego, preparamos su configuración:

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml

Hacemos que trabaje mejor con systemd (el jefe de procesos de Ubuntu):

sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

Reiniciamos todo:

sudo systemctl restart containerd
sudo systemctl enable containerd

🎯 ¿Qué hace esto?
Instalamos y configuramos containerd para que Kubernetes pueda crear contenedores como un campeón.


💾 Paso 4: Adiós, swap (lo siento, amigo)

Kubernetes ODIA el swap (el espacio de memoria virtual del disco). Así que fuera:

sudo swapoff -a

Y para que no vuelva a activarse al reiniciar:

sudo sed -i.bak '/\bswap\b/ s/^/#/' /etc/fstab

🎯 ¿Por qué?
Kubernetes necesita que la RAM sea totalmente predecible. El swap confunde a los nodos.


🔥 Paso 5: Instalando kubeadm, kubelet y kubectl

Ahora sí, vamos a por lo importante:

Primero, descargamos la llave de confianza:

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Añadimos el repositorio oficial:

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Actualizamos y ¡boom! Instalamos Kubernetes:

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

🎯 ¿Qué es cada cosa?

  • kubelet: el agente que corre en cada máquina.
  • kubeadm: la herramienta para inicializar clusters.
  • kubectl: el control remoto para hablar con el cluster.

🎛 Paso 6: ¡A montar el cluster!

Momento épico: inicializar Kubernetes.

sudo kubeadm init --pod-network-cidr=172.16.0.0/16

🎯 ¿Qué hace esto?
Monta el cerebro de Kubernetes, el control plane, y reserva el rango IP para los pods.

Ahora configuramos kubectl para no tener que ser root todo el rato:

mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
source <(kubectl completion bash)
echo 'source <(kubectl completion bash)' >> ~/.bashrc

Y si estás solo en una máquina (modo laboratorio), permite que los pods se programen en el nodo maestro (no recomendado, para pruebas en modo laboratorio, ok):

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

⛵ Paso 7: Instalamos Helm (el timón de Kubernetes)

Helm es el gestor de paquetes de Kubernetes. ¡Una joya!

Instalamos Helm:

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Comprobamos que funcione:

helm version

🎯 ¿Por qué Helm?
Porque instalar cosas en Kubernetes manualmente es un infierno. Helm te salva la vida.


🐝 Paso 8: Instalamos Cilium (el alma de la red)

Usaremos Cilium, la joya de la corona en CNI modernos (más rápido, seguro y sexy que otros).

Añadimos su repositorio:

helm repo add cilium https://helm.cilium.io/
helm repo update

Instalamos:

helm template cilium cilium/cilium --version 1.16.1 \
--namespace kube-system > cilium.yaml
kubectl apply -f cilium.yaml

🎯 ¿Qué es Cilium?
Es el motor que conecta pods, gestiona la seguridad de red, y usa eBPF para volar bajito (y rápido).

Verificamos:

kubectl get pods -n kube-system -l k8s-app=cilium

🎉 ¡Cluster montado! ¿Y ahora qué?

Si todo salió bien, ya tienes tu Kubernetes vivo y corriendo sobre Ubuntu 24.04, con Cilium acelerando los paquetes y Helm listo para instalar apps como si no hubiera un mañana.

Ahora puedes desplegar tus primeras aplicaciones, probar Hubble (observabilidad de Cilium) o simplemente admirar tu obra maestra.


🧹 Resumen final:

Paso¿Qué hicimos?
Actualizar Ubuntu¡Tener todo listo!
Habilitar IP ForwardingDejar pasar los paquetes
Instalar containerdPreparar el motor
Desactivar swapNo confundir a Kubernetes
Instalar Kubernetes componentesCerebro y herramientas
Inicializar el clusterCrear la infraestructura
Instalar HelmGestionar todo fácilmente
Instalar CiliumTener redes potentes

📢 ¡No te vayas sin comentar!

¿Te gustaría que en el próximo artículo te enseñe cómo instalar Hubble para espiar el tráfico de tu cluster como un agente secreto? 🕵️‍♂️
¡Déjamelo en los comentarios del vídeo de Youtube y no olvides suscribirte!

Vídeo