Actualizando nodos Linux

Actualizando nodos Linux

Esta página explica cómo actualizar nodos de trabajo Linux creados con kubeadm.

Antes de empezar

Necesitas tener acceso a la terminal en todos los nodos, y la herramienta de línea de comandos kubectl debe estar configurada para comunicarse con tu clúster. Se recomienda seguir este tutorial en un clúster con al menos dos nodos que no actúen como nodos controladores.

Para verificar la versión, ingresa kubectl version.

Cambiando el repositorio de paquetes

Si usas los repositorios de paquetes gestionados por la comunidad (pkgs.k8s.io), necesitas habilitar el repositorio de paquetes de la versión menor de Kubernetes deseada. Esto se explica en el documento cambiando el repositorio de paquetes de Kubernetes.

Nota: Los repositorios de paquetes heredados (apt.kubernetes.io y yum.kubernetes.io) han sido declarados obsoletos y congelados a partir del 13 de septiembre de 2023. Se recomienda encarecidamente y se requiere el uso de los nuevos repositorios de paquetes alojados en pkgs.k8s.io para poder instalar las versiones de Kubernetes lanzadas después del 13 de septiembre de 2023. Los repositorios heredados obsoletos y sus contenidos podrían ser eliminados en cualquier momento en el futuro y sin previo aviso. Los nuevos repositorios de paquetes ofrecen descargas para las versiones de Kubernetes a partir de la v1.24.0.

Actualizando los nodos de trabajo

Actualiza kubeadm

Actualiza kubeadm:

# sustituye x en 1.36.x-* por la última versión de parche
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.36.x-*' && \
sudo apt-mark hold kubeadm

Para sistemas con DNF:

# sustituye x en 1.36.x-* por la última versión de parche
sudo yum install -y kubeadm-'1.36.x-*' --disableexcludes=kubernetes

Para sistemas con DNF5:

# sustituye x en 1.36.x-* por la última versión de parche
sudo yum install -y kubeadm-'1.36.x-*' --setopt=disable_excludes=kubernetes

Ejecuta "kubeadm upgrade"

Para los nodos de trabajo, este comando actualiza la configuración local del kubelet:

sudo kubeadm upgrade node

Drena el nodo

Prepara el nodo para el mantenimiento marcándolo como no programable y desalojando las cargas de trabajo:

# ejecuta este comando en un nodo controlador
# sustituye <nodo-a-drenar> por el nombre del nodo que estás drenando
kubectl drain <nodo-a-drenar> --ignore-daemonsets

Actualiza kubelet y kubectl

  1. Actualiza el kubelet y kubectl:

    # sustituye x en 1.36.x-* por la última versión de parche
    sudo apt-mark unhold kubelet kubectl && \
    sudo apt-get update && sudo apt-get install -y kubelet='1.36.x-*' kubectl='1.36.x-*' && \
    sudo apt-mark hold kubelet kubectl
    

    Para sistemas con DNF:

    # sustituye x en 1.36.x-* por la última versión de parche
    sudo yum install -y kubelet-'1.36.x-*' kubectl-'1.36.x-*' --disableexcludes=kubernetes
    

    Para sistemas con DNF5:

    # sustituye x en 1.36.x-* por la última versión de parche
    sudo yum install -y kubelet-'1.36.x-*' kubectl-'1.36.x-*' --setopt=disable_excludes=kubernetes
    
  2. Reinicia el kubelet:

    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    

Reincorpora el nodo

Vuelve a poner el nodo disponible marcándolo como programable:

# ejecuta este comando en un nodo controlador
# sustituye <nodo-a-reincorporar> por el nombre de tu nodo
kubectl uncordon <nodo-a-reincorporar>

¿Qué sigue?