Hardening de OS y Provisión de Runtime
Este estándar define los requisitos mínimos de infraestructura y configuración del Kernel necesarios para garantizar la estabilidad de un nodo en un clúster de Kubernetes v1.35.
1. Alineación de Prerrequisitos
Antes de la inyección de binarios, cada nodo debe cumplir con el estado de "Arquitectura Limpia":
- Swap Management: Desactivación total para predictibilidad del Scheduler.
- Identidad de Red: Hostnames únicos y MAC addresses persistentes.
sudo swapoff -a
# Persistencia post-reboot
sudo sed -i '/swap/s/^/#/' /etc/fstab
2. Configuración de Capas de Red (Kernel)
Kubernetes requiere que el tráfico de los puentes (bridges) sea visible para las iptables y que el reenvío de IP esté habilitado a nivel de sistema.
# Carga de módulos de red
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Parámetros de red persistentes
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
3. Implementación del Container Runtime (CRI)
Utilizamos containerd como estándar de industria. El punto crítico de este paso es la alineación del driver de cgroup con el gestor del sistema operativo (systemd).
sudo apt update && sudo apt install -y containerd
# Generación de configuración estándar de ingeniería
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
# Alineación con SystemdCgroup (Obligatorio para Ubuntu 24.04)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
Si el driver de cgroup de containerd no coincide con el de kubelet (ambos deben ser systemd), el clúster experimentará fallos de estabilidad aleatorios y reinicios del kubelet.
Documentación Relacionada: