Tutorial: Actualización de un clúster de Azure Kubernetes Service (AKS)

Como parte del ciclo de vida de la aplicación y del clúster, es posible que quiera actualizar su versión de Kubernetes a la más reciente disponible. Puede actualizar el clúster de Azure Kubernetes Service (AKS) mediante la CLI de Azure, Azure PowerShell o Azure Portal.

En este tutorial, parte siete de siete, actualizará un clúster de AKS. Aprenderá a:

  • Identificar las versiones de Kubernetes actuales y disponibles.
  • Actualizar los nodos de Kubernetes.
  • Validar una actualización correcta.

Antes de empezar

En los tutoriales anteriores, empaquetó una aplicación en una imagen de contenedor y cargó la imagen de contenedor en Azure Container Registry (ACR). También creó un clúster de AKS e implementó una aplicación en él. Si no ha completado estos pasos, pero quiere seguir con el tutorial, comience por Tutorial 1: Preparación de una aplicación para AKS.

Si se usa la CLI de Azure, en este tutorial se requiere la versión 2.34.1 de la CLI de Azure o cualquier versión posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Si se usa Azure PowerShell, en este tutorial se requiere la versión 5.9.0 de Azure PowerShell o cualquier versión posterior. Ejecute Get-InstalledModule -Name Az para encontrar la versión. Si necesita instalarla o actualizarla, consulte el artículo sobre la instalación de Azure PowerShell.

Obtención de las versiones disponibles del clúster

  • Antes de actualizar, use el comando az aks get-upgrades para comprobar qué versiones de Kubernetes están disponibles para el clúster.

    az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
    

    En la salida de ejemplo siguiente se muestra la versión actual como 1.26.6 y se enumeran las versiones disponibles en upgrades:

    {
      "agentPoolProfiles": null,
      "controlPlaneProfile": {
        "kubernetesVersion": "1.26.6",
        ...
        "upgrades": [
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.1"
          },
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.3"
          }
        ]
      },
      ...
    }
    

Actualización de un clúster de AKS

Los nodos de AKS se acordonarán y vaciarán minuciosamente para minimizar cualquier posible interrupción en las aplicaciones en ejecución. Durante este proceso, AKS realiza los pasos siguientes:

  • Agrega un nuevo nodo de búfer (o tantos nodos como se hayan configurado en sobrecarga máxima) al clúster que ejecuta la versión especificada de Kubernetes.
  • Acordona y purga uno de los nodos antiguos para minimizar la interrupción de las aplicaciones en ejecución. Si se utiliza la sobrecarga máxima, acordona y drena todos los nodos posibles al mismo tiempo que la cantidad de nodos del buffer especificado.
  • Cuando el nodo anterior se ha purgado por completo, se restablece la imagen inicial para recibir la nueva versión y se convierte en el nodo de búfer para el siguiente nodo que se va a actualizar.
  • Este proceso se repite hasta que se hayan actualizado todos los nodos del clúster.
  • Al final del proceso, se elimina el último nodo del búfer, y se mantiene el número de nodos de agente existentes, así como el equilibrio de zona.

Nota:

Si no se especifica ninguna revisión, el clúster se actualiza automáticamente a la revisión de disponibilidad general más reciente de la versión secundaria especificada. Por ejemplo, si --kubernetes-version se establece en 1.21, el clúster se actualiza a 1.21.9.

Para más información, veaActualizaciones de versión secundaria de Kubernetes admitidas en AKS.

Puede actualizar manualmente el clúster o configurar las actualizaciones automáticas del clúster. Le recomendamos que configure las actualizaciones automáticas del clúster para asegurarse de que el clúster siempre ejecuta la versión más reciente de Kubernetes.

Actualización manual del clúster

  • Actualice el clúster mediante el comando az aks upgrade.

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    

    Nota

    No se pueden actualizar varias versiones secundarias al mismo tiempo. Por ejemplo, puede realizar la actualización de la versión 1.14.x a la 1.15.x, pero no de la 1.14.x a la 1.16.x directamente. Para actualizar de la versión 1.14.x a la 1.16.x, primero debe actualizar de la 1.14.x a la 1.15.x y, después, realizar otra actualización de la versión 1.15.x a la 1.16.x.

    La siguiente salida de ejemplo muestra el resultado de la actualización a la versión 1.27.3. Observe que la kubernetesVersion ahora muestra 1.27.3:

    {
      "agentPoolProfiles": [
        {
          "count": 3,
          "maxPods": 110,
          "name": "nodepool1",
          "osType": "Linux",
          "vmSize": "Standard_DS1_v2",
        }
      ],
      "dnsPrefix": "myAKSClust-myResourceGroup-19da35",
      "enableRbac": false,
      "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io",
      "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
      "kubernetesVersion": "1.27.3",
      "location": "eastus",
      "name": "myAKSCluster",
      "type": "Microsoft.ContainerService/ManagedClusters"
    }
    

Configuración de actualizaciones automáticas del clúster

  • Establezca un canal de actualización automática en el clúster mediante el comando az aks update con el parámetro --auto-upgrade-channel establecido en patch.

    az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel patch
    

Para más información, consulte Actualización automática de un clúster de Azure Kubernetes Service (AKS).

Actualización de imágenes del nodo AKS

AKS proporciona regularmente nuevas imágenes de nodo. Las imágenes de nodo de Linux se actualizan semanalmente, mientras que las de Windows se actualizan mensualmente. Le recomendamos que actualice las imágenes de nodo con frecuencia para usar las últimas características y actualizaciones de seguridad de AKS. Para más información, consulte Actualización de imágenes de nodo de Azure Kubernetes Service (AKS). Para configurar las actualizaciones automáticas de imágenes de nodo, consulte Actualización automática de las imágenes de sistema operativo de nodo de clúster de Azure Kubernetes Service (AKS).

Visualización de los eventos de actualización

Nota:

Al actualizar el clúster, pueden producirse los siguientes eventos de Kubernetes en los nodos:

  • Sobrecarga: se crea un nodo de sobrecarga.
  • Purga: se desalojan pods del nodo. Cada pod tiene un tiempo de espera de cinco minutos para completar la expulsión.
  • Actualización: la actualización de un nodo se ha realizado correctamente o ha generado un error.
  • Eliminación: se ha eliminado un nodo de sobrecarga.
  • Vea los eventos de actualización en los espacios de nombres predeterminados mediante el comando kubectl get events.

    kubectl get events --field-selector source=upgrader
    

    En la salida de ejemplo siguiente se muestran algunos de los eventos anteriores enumerados durante una actualización:

    ...
    default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001]
    ...
    default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool %!s(MISSING)
    ...
    

Validación de una actualización

  • Confirme que la actualización se completó correctamente con el comando az aks show.

    az aks show --resource-group myResourceGroup --name myAKSCluster --output table
    

    La salida del ejemplo siguiente muestra que el clúster de AKS ejecuta KubernetesVersion 1.27.3:

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.27.3               1.27.3                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Eliminación del clúster

Como este tutorial es la última parte de la serie, puede que quiera eliminar el clúster de AKS para evitar incurrir en cargos de Azure.

  • Quite el grupo de recursos, el servicio de contenedor y todos los recursos relacionados mediante el comando az group delete.

    az group delete --name myResourceGroup --yes --no-wait
    

Nota:

Cuando elimina el clúster, la entidad de servicio Microsoft Entra que utiliza el clúster de AKS no se quita. Para conocer los pasos que hay que realizar para quitar la entidad de servicio, consulte Consideraciones principales y eliminación de AKS. Si usó una identidad administrada, esta está administrada por la plataforma y no requiere que aprovisione o rote los secretos.

Pasos siguientes

En este tutorial, actualizó Kubernetes en un clúster de AKS. Ha aprendido a:

  • Identificar las versiones de Kubernetes actuales y disponibles.
  • Actualizar los nodos de Kubernetes.
  • Validar una actualización correcta.

Para más información sobre AKS, consulte Introducción a AKS. Para instrucciones sobre cómo crear soluciones completas con AKS, consulte Guía de soluciones de AKS.