Inicio
Proyectos
Ver todos Laboratorio SOC
Blog
Tutoriales
Ver todos Servidor LDAP Servidor Web AWS Kubernetes Pandora FMS Descargar VM Fortinet Autenticación LDAP Gophish
CTF
Ver todos Lab 1 — vsftpd + Pivoting Lab 2 — SMB + SQLi + SUID Lab 3 — Upload + Doble Pivot Lab 4 — Doble Pivot Real
Portfolio Consultoría

Despliegue de Kubernetes

Actualizado: 2026-02-16 · Dificultad: Media · Tiempo estimado: 20-30 min

Resultado: al final tendrás un nodo principal de Kubernetes funcionando donde desplegar tus proyectos.

Requisitos


Objetivo

Vamos a montar un nodo principal de Kubernetes para desplegar nuestros proyectos.

Pasos

1) Actualización del sistema

Primero actualizamos el sistema.

sudo apt update && sudo apt -y full-upgrade && sudo reboot

2) Instalar dependencias

Instalamos las dependencias necesarias.

sudo apt-get install -y apt-transport-https ca-certificates curl gpg
sudo mkdir -p /etc/apt/keyrings

3) Añadimos repositorio oficial Kubernetes

Descargamos la clave del repositorio como confiable:

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

Añadimos el repositorio:

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

Volvemos a hacer update para que nos actualize los paquetes con los de dicho repo:

sudo apt update

Instalamos los paquetes:

sudo apt install -y kubelet kubeadm kubectl

Evitamos que se actualicen automáticamente y quedarnos con una versión estable:

sudo apt-mark hold kubelet kubeadm kubectl

4) Configuración del sistema

Primero desactivamos el swap:

sudo swapoff -a

Y quitamos la swap del fstab para que no se monte cada vez que inicamos el equipo:

sudo sed -i '/ swap / s/^/#/' /etc/fstab

Cargamos los módulos necesarios:

sudo modprobe overlay
sudo modprobe br_netfilter

Configuramos el sistema para que funcione correctamente con Kubernetes:

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

sudo sysctl --system

5) Configuración de containerd

Vamos a entrar a editar el archivo /etc/containerd/config.toml

Y vamos a cambiar:

SystemdCgroup = false

Por:

SystemdCgroup = true

Y reiniciamos containerd:

sudo systemctl restart containerd
sudo systemctl restart kubelet

6) Inciando el Cluster

Primero vamos a añadir el hostname en el archivo /etc/hosts del equipo.

192.168.1.200 k8scp

Iniciamos el cluster:

sudo kubeadm init --apiserver-advertise-address=192.168.1.200 --control-plane-endpoint=k8scp --pod-network-cidr=172.24.0.0/16

Fijaros n los rangos de RED que estoy yo poniendo y cambiarlos a vuestras necesidades.

7) Configurar kubectl

Vamos a copiar el archivo de configuración que viene por defecto en Kubernetes y configurar los permisos:

mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

8) Instalar Calico

Instalamos Calico para la red interna de Kubernetes:

curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

Calico es el gestor de redes para los Pods en Kubernetes, y yo quiero que asigne un rango de IP concreto. para ello, en el archivo calico.yaml hay que cambiar el CIDR:

192.168.0.0/16 → 172.24.0.0/16
kubectl apply -f calico.yaml

9) Permitir Single Node

Por defecto Kubernetes no permite desplegar un solo nodo, para ello debemos permitirlo desactivando el taint:

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

10) Instalar Dashboard

Instalamos el dashboard de Kubernetes para poder gestionar el cluster:

sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

Y creamos un usuario para el dashboard:

kubectl -n kubernetes-dashboard create token admin-user

Recuerda guardarlo en un archivo para poder acceder al dashboard desde el navegador.

Para poder acceder al dashboard necesitarás forwardear el servicio de dashboard a tu red local:

sudo kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard 8443:443 --address 0.0.0.0

Y acceder a https://localhost:8443

Y debes añadir la siguiente excepción al firewall:

sudo ufw allow 8443

Debugging

Si tienes problemas con el cluster, puedes usar los siguientes comandos:

sudo crictl ps -a | grep etcd

crictl interactua directamente con el servicio que corre los contenedores, en este caso containerd, listando su estado y errores que pueda haber al levantarlos.

Ver recursos del sistema:

df -h
free -h

En ocasiones, podemos tener el disco lleno y no darnos cuenta, por lo que es importante revisar el espacio en disco.

Reset completo:

sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d
sudo rm -rf /var/lib/cni
sudo rm -rf /var/lib/etcd
sudo systemctl restart containerd
sudo systemctl restart kubelet

Volver a tutoriales.