Actualización de la imagen de nodos de Azure Kubernetes Service (AKS)

AKS admite la actualización de las imágenes de un nodo para que esté actualizado con las actualizaciones más recientes del sistema operativo y en tiempo de ejecución. AKS incluye de forma regular imágenes nuevas en las actualizaciones más recientes, por lo que se recomienda actualizar las imágenes del nodo habitualmente para poder disfrutar de las características más recientes de AKS. Las imágenes de nodo de Linux se actualizan semanalmente, mientras que las de Windows se actualizan mensualmente. Aunque a los clientes se les notifican las actualizaciones de imágenes mediante las notas de la versión de AKS, las actualizaciones pueden tardar hasta una semana en publicarse en todas las regiones. En este artículo se muestra cómo actualizar las imágenes de nodo de un clúster de AKS y cómo actualizar las imágenes de grupo de nodos sin actualizar la versión de Kubernetes.

Para más información sobre las imágenes más recientes proporcionadas por AKS, consulte las notas de la versión de AKS.

Para obtener información sobre la actualización de la versión del clúster de Kubernetes, vea Actualización de un clúster de AKS.

Nota

El clúster de AKS debe usar conjuntos de escalado de máquinas virtuales para los nodos.

Comprobación de si el grupo de nodos está en la imagen de nodo más reciente

Puede ver cuál es la versión más reciente de la imagen de nodo disponible para el grupo de nodos con el siguiente comando:

az aks nodepool get-upgrades \
    --nodepool-name mynodepool \
    --cluster-name myAKSCluster \
    --resource-group myResourceGroup

En la salida puede ver latestNodeImageVersion como en el ejemplo siguiente:

{
  "id": "/subscriptions/XXXX-XXX-XXX-XXX-XXXXX/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/nodepool1/upgradeProfiles/default",
  "kubernetesVersion": "1.17.11",
  "latestNodeImageVersion": "AKSUbuntu-1604-2020.10.28",
  "name": "default",
  "osType": "Linux",
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.ContainerService/managedClusters/agentPools/upgradeProfiles",
  "upgrades": null
}

Por lo tanto, para nodepool1 la imagen de nodo más reciente disponible es AKSUbuntu-1604-2020.10.28. Ahora puede compararla con la versión de la imagen de nodo actual que usa el grupo de nodos mediante la ejecución de:

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --query nodeImageVersion

La siguiente sería una salida de ejemplo:

"AKSUbuntu-1604-2020.10.08"

Por lo tanto, en este ejemplo puede actualizar desde la versión de la imagen actual AKSUbuntu-1604-2020.10.08 a la versión más reciente AKSUbuntu-1604-2020.10.28.

Actualización de todos los nodos de todos los grupos de nodos

La actualización de imágenes de nodo se realiza con az aks upgrade. Para actualizar la imagen de nodo, utilice el siguiente comando:

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-image-only

Durante la actualización, compruebe el estado de las imágenes de nodo con el siguiente comando kubectl, para obtener las etiquetas y filtrar la información de la imagen de nodo actual:

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Una vez completada la actualización, use az aks show para obtener los detalles actualizados del grupo de nodos. La imagen del nodo actual se muestra en la propiedad nodeImageVersion.

az aks show \
    --resource-group myResourceGroup \
    --name myAKSCluster

Actualización de un grupo de nodos específico

La actualización de la imagen en un grupo de nodos es similar a la actualización de la imagen en un clúster.

Para actualizar la imagen del sistema operativo del grupo de nodos sin realizar una actualización del clúster de Kubernetes, utilice la opción --node-image-only en el ejemplo siguiente:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-image-only

Durante la actualización, compruebe el estado de las imágenes de nodo con el siguiente comando kubectl, para obtener las etiquetas y filtrar la información de la imagen de nodo actual:

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Una vez completada la actualización, use az aks nodepool show para obtener los detalles actualizados del grupo de nodos. La imagen del nodo actual se muestra en la propiedad nodeImageVersion.

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

Actualización de imágenes de nodo con sobrecarga de nodos

Para acelerar el proceso de actualización de la imagen de nodo, puede actualizar las imágenes de nodo mediante un valor de sobrecarga de nodo personalizable. De forma predeterminada, AKS usa un nodo adicional para configurar las actualizaciones.

Si desea aumentar la velocidad de las actualizaciones, use el valor --max-surge para configurar el número de nodos que se usarán para las actualizaciones, de forma que se completen más rápido. Para obtener más información sobre las ventajas e inconvenientes de varias configuraciones de --max-surge, consulte --max-surge.

El siguiente comando establece el valor máximo de sobrecarga para realizar una actualización de imagen de nodo:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --max-surge 33% \
    --node-image-only \
    --no-wait

Durante la actualización, compruebe el estado de las imágenes de nodo con el siguiente comando kubectl, para obtener las etiquetas y filtrar la información de la imagen de nodo actual:

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Use az aks nodepool show para obtener los detalles actualizados del grupo de nodos. La imagen del nodo actual se muestra en la propiedad nodeImageVersion.

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

Pasos siguientes