Esta página explica cómo actualizar nodos de trabajo Linux creados con kubeadm.
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.
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.
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.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
Para los nodos de trabajo, este comando actualiza la configuración local del kubelet:
sudo kubeadm upgrade node
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 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
Reinicia el kubelet:
sudo systemctl daemon-reload
sudo systemctl restart kubelet
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>