Laboratorio Kubernetes con kubeadm y containerd en Ubuntu
Un servidor cloud te da libertad para desplegar aplicaciones, automatizaciones y bases de datos, pero esa libertad tambien exige criterio operativo. En esta guia vas a ver una implementacion practica de crear un laboratorio kubernetes con kubeadm y containerd en cloud servers con comandos orientados a Ubuntu/Debian, puntos de verificacion y advertencias para no romper disponibilidad ni seguridad.
La idea no es memorizar comandos sueltos, sino dejar un flujo repetible: preparar el servidor, instalar la herramienta, configurar lo minimo seguro, probar que funciona y cerrar con controles de seguridad.
¿Qué es?
kubeadm es una herramienta oficial para crear un cluster Kubernetes minimo y conforme a buenas practicas de arranque. No instala todo lo necesario para produccion por si sola: red, storage, backups, observabilidad y politicas quedan bajo tu responsabilidad.
¿Cuándo conviene usarlo?
- Quieres aprender Kubernetes sobre servidores reales.
- Necesitas un laboratorio para probar manifests, Helm o pipelines.
- Buscas entender los componentes antes de elegir una plataforma administrada.
Requisitos previos
- Uno o mas Cloud Servers Ubuntu/Debian compatibles.
- Al menos 2 GB de RAM y 2 CPU para control plane de laboratorio.
- Conectividad entre nodos.
- Conocimiento basico de redes Linux.
## Puertos necesarios
- 6443/tcp API server
- 10250/tcp kubelet
- 2379-2380/tcp etcd en control plane
- puertos CNI segun plugin
Paso 1: Preparar nodos

Cumplir requisitos minimos y conectividad entre servidores.
sudo swapoff -a
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
Kubernetes requiere cuidado de red; en produccion define red privada, backups y monitoreo antes.
Paso 2: Instalar containerd

Agregar runtime CRI compatible.
sudo apt update
sudo apt install -y containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
Advertencia: Kubernetes ya no usa dockershim; usa un runtime CRI como containerd.
Paso 3: Instalar kubeadm, kubelet y kubectl

Agregar herramientas del cluster.
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Advertencia: Usa versiones compatibles entre kubeadm, kubelet y el control plane.
Paso 4: Inicializar control plane
Crear el cluster minimo.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config

**Advertencia:** Guarda el comando kubeadm join en un lugar seguro si sumaras workers.
Paso 5: Instalar red de pods y probar
Permitir comunicacion entre pods.
kubectl get nodes
kubectl apply -f URL_DEL_CNI
kubectl get pods -A
kubectl create deployment nginx --image=nginx
Elige un CNI oficial/activo y revisa sus requisitos de puertos.
Antes de dar por terminado el despliegue, revisa tres puntos: que el servicio publico sea realmente el que querias publicar, que los puertos internos no hayan quedado expuestos y que los secretos no esten en archivos versionados o historiales de shell. Si el procedimiento toca bases de datos, runners, automatizaciones o certificados, prueba primero en un entorno secundario.
Tambien conviene documentar como se reinicia, como se actualiza, donde estan los logs y cual es el comando de verificacion rapida. Esa informacion vale mucho cuando otra persona del equipo tiene que intervenir.
Problemas frecuentes
1 - Nodo queda NotReady
Revisa que el CNI este instalado y que kubelet no tenga errores.
kubeadm falla por swap
Desactiva swap y aseguralo en /etc/fstab.
2- Pods no se comunican
Confirma reglas de firewall y requisitos del plugin CNI elegido.
Conclusión
DonWeb Cloud puede servir como laboratorio flexible para aprender Kubernetes con servidores reales. Para cargas criticas, suma arquitectura, seguridad y operacion antes de considerarlo produccion.