StudyToCert

CKA / Lecciones · English

Certified Kubernetes Administrator CKA (Kubernetes v1.35 curriculum)

Preparar los hosts para kubeadm: containerd, cgroup driver systemd coincidente, swap, módulos overlay y br_netfilter, sysctls de ip_forward y bridge, y puertos requeridos

kubeadm arranca un clúster, pero asume que cada host ya está preparado: un container runtime instalado, el kernel configurado para la red de contenedores y el kubelet capaz de gestionar recursos. Sus preflight checks te detendrán si algo de esto está mal, y el CKA puede pedirte que arregles un host que no los pasa.

Empieza por el container runtime. containerd es la opción más común. Instálalo, genera una configuración por defecto con containerd config default > /etc/containerd/config.toml y asegúrate de que las opciones del runtime runc tengan SystemdCgroup = true. En distribuciones basadas en systemd, el kubelet usa por defecto el cgroup driver systemd cuando lo configura kubeadm, y el runtime debe usar el mismo driver. Si el kubelet y el runtime no coinciden en el cgroup driver, los Pods e incluso el nodo pueden volverse inestables. Reinicia containerd después de editar el archivo.

Luego, el swap. Históricamente el kubelet se negaba a iniciar con swap habilitado, y el paso estándar de preparación sigue siendo deshabilitarlo: swapoff -a para el sistema en ejecución y comentar las líneas de swap en /etc/fstab para que siga deshabilitado después de un reinicio. Las versiones más recientes de Kubernetes agregaron soporte configurable para swap, pero a menos que una tarea indique lo contrario, lo seguro es esperar que el swap esté deshabilitado.

La red de contenedores necesita dos módulos del kernel. overlay da soporte al sistema de archivos overlay que usan las imágenes de contenedor, y br_netfilter hace que el tráfico en bridge sea visible para iptables. Cárgalos ahora con modprobe y hazlos persistentes en un archivo dentro de /etc/modules-load.d/. Después configura los sysctls para que el kernel reenvíe paquetes y haga pasar el tráfico en bridge por iptables.

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay && sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system

Por último, los puertos. Los nodos del control plane necesitan tener accesibles, según corresponda, el 6443 (API server), el 2379 y el 2380 (cliente y peer de etcd), el 10250 (API del kubelet), el 10257 (controller-manager) y el 10259 (scheduler). Los worker nodes necesitan el 10250 más el rango de NodePort, de 30000 a 32767 por defecto. Tu plugin de CNI también puede necesitar sus propios puertos. Instala kubeadm, kubelet y kubectl en versiones coincidentes desde el repositorio de paquetes de Kubernetes y congélalos para que las actualizaciones rutinarias no los actualicen por sorpresa (por ejemplo apt-mark hold kubelet kubeadm kubectl).

Términos clave

cgroup driver (controlador de cgroups)
La forma en que el kubelet y el runtime crean los grupos de control; ambos deben usar el mismo, normalmente systemd.
br_netfilter
Un módulo del kernel que permite que iptables vea el tráfico que atraviesa un bridge de Linux.
net.ipv4.ip_forward
El sysctl que permite al kernel enrutar paquetes entre interfaces, necesario para el tráfico de los Pods.
Preflight checks (verificaciones previas)
Pruebas que kubeadm ejecuta antes de init o join para detectar errores de configuración del host.
Ejemplo real

kubeadm init falla en los preflight checks con un mensaje de que el contenido de /proc/sys/net/ipv4/ip_forward no está en 1. Agregas net.ipv4.ip_forward = 1 a /etc/sysctl.d/k8s.conf, ejecutas sysctl --system y vuelves a ejecutar init, que ahora pasa.

Consejo para el examen: Una discrepancia de cgroup driver no siempre detiene la instalación; aparece más tarde como Pods que se reinician intermitentemente o errores del kubelet. Verifica SystemdCgroup = true en la configuración de containerd y reinicia containerd cada vez que la modifiques.

Comprueba lo que sabes

¿Qué dos módulos del kernel se cargan al preparar un host para kubeadm, y por qué?

overlay para el sistema de archivos de las imágenes de contenedor y br_netfilter para que el tráfico en bridge de los Pods pase por iptables.

¿Dónde haces persistentes los ajustes de sysctl para que sobrevivan a un reinicio?

En un archivo dentro de /etc/sysctl.d/, aplicado con sysctl --system.

¿Cuál es el rango de NodePort por defecto que debe estar abierto en los nodos?

De 30000 a 32767.

Estudia CKA gratis
Plan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.
Abrir el plan de estudio