Gestión del Clúster
Las 3 Reglas de Oro
-
La Regla del Salto (Version Skew): NUNCA puedes saltarte una versión menor (minor version). Si estás en la
v1.28.x, solo puedes actualizar a lav1.29.x. No puedes saltar directamente a lav1.30.x. -
El Orden Estricto: Siempre se actualiza de "arriba hacia abajo":
-
Primero: La herramienta
kubeadm. - Segundo: El nodo Control Plane (Master).
- Tercero: Los nodos Workers.
-
Por último:
kubeletykubectlen cada nodo. -
El Respaldo: En la vida real, siempre debes hacer un Backup de etcd antes de iniciar un upgrade.
Fase 1: Actualizar el Control Plane (Nodo Master)
Conéctate por SSH a tu nodo Master. El objetivo aquí es actualizar el "cerebro" del clúster (API server, scheduler, controller-manager).
-
Actualizar la herramienta kubeadm:
Primero debemos "descongelar" el paquete, actualizarlo a la versión exacta deseada y volver a congelarlo para que no se actualice por accidente con el sistema operativo.
# Actualizar Kubeadm sudo apt-mark unhold kubeadm curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring-v1.30.gpg echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring-v1.30.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubeadm=1.30.14-1.1 # Reemplaza por la versión objetivo sudo apt-mark hold kubeadm # kubeadm, kubectl, kubelet siempre deben estar holdeados apt-mark showhold # End Actualizar Kubeadm -
Verificar el plan de actualización:
Este comando revisa el clúster y te dice a qué versiones puedes actualizar.
-
Aplicar la actualización:
Este es el comando mágico que actualiza los Pods estáticos del Control Plane.
-
Drenar el nodo (Evacuar Pods):
Antes de actualizar el agente local (kubelet), debemos vaciar el nodo de cargas de trabajo de forma segura.
-
Actualizar Kubelet y Kubectl:
-
Reiniciar el servicio Kubelet:
-
Devolver el nodo a la normalidad (Uncordon):
Le decimos al clúster que el nodo ya está listo para volver a recibir Pods.
Fase 2: Actualizar los Worker Nodes
Este proceso se repite por cada nodo Worker que tengas en el clúster.
-
Actualizar kubeadm en el Worker:
# Actualizar Kubeadm sudo apt-mark unhold kubeadm curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring-v1.30.gpg echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring-v1.30.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubeadm=1.30.14-1.1 # Reemplaza por la versión objetivo sudo apt-mark hold kubeadm # kubeadm, kubectl, kubelet siempre deben estar holdeados apt-mark showhold # End Actualizar Kubeadm -
Drenar el Worker Node (Desde el Master o donde tengas acceso a la API):
Movemos todos los Pods de las aplicaciones de este nodo a otros nodos sanos.
-
Actualizar la configuración del nodo:
Esto actualiza la configuración local del nodo.
-
Actualizar Kubelet y Kubectl:
-
Reiniciar el servicio:
-
Devolver el Worker a la normalidad (Uncordon):
Fase 3: Verificación Final
Una vez que hayas actualizado el Control Plane y todos tus Workers, verifica que todos los nodos reporten la nueva versión y estén en estado Ready: