Actualización de imágenes de nodos de Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) proporciona regularmente nuevas imágenes de nodo, por lo que resulta conveniente actualizar las imágenes de nodo con frecuencia para usar 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. Los anuncios de actualización de imágenes se incluyen en las notas de la versión de AKS y pueden tardar hasta una semana en implementarse en todas las regiones. Las actualizaciones de imágenes de nodo también se pueden realizar automáticamente y programar mediante el mantenimiento planeado. Para más información, vea Actualización automática de imágenes de nodo.

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 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.

No es posible cambiar a una versión anterior de imagen de nodo (por ejemplo , AKSUbuntu-2204 a AKSUbuntu-1804 o AKSUbuntu-2204-202308.01.0 a AKSUbuntu-2204-202307.27.0).

Comprobar las actualizaciones de imágenes de nodo disponibles

Compruebe si hay actualizaciones de imágenes de nodo disponibles mediante el comando az aks nodepool get-upgrades.

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

La salida muestra la latestNodeImageVersion como en el ejemplo siguiente:

{
  "id": "/subscriptions/XXXX-XXX-XXX-XXX-XXXXX/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/mynodepool/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
}

La salida de ejemplo muestra AKSUbuntu-1604-2020.10.28 como la latestNodeImageVersion.

Compare la versión más reciente con la versión actual de la imagen de nodo mediante el comando az aks nodepool show.

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

La salida debería similar al siguiente ejemplo:

"AKSUbuntu-1604-2020.10.08"

En este ejemplo, hay una actualización de la versión de la imagen de nodo disponible, que es de la versión AKSUbuntu-1604-2020.10.08 a la versión AKSUbuntu-1604-2020.10.28.

Actualización de todas las imágenes de nodos de todos los grupos de nodos

Actualice la imagen de nodo mediante el comando az aks upgrade con la marca --node-image-only.

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

Puede comprobar el estado de las imágenes de nodo mediante el comando kubectl get nodes.

Nota

Este comando puede diferir ligeramente en función del shell que use. Para obtener más información sobre los entornos de Windows o PowerShell consulte la documentación de JSONPath de Kubernetes.

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 el comando 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

Para actualizar la imagen del sistema operativo de un grupo de nodos sin realizar una actualización del clúster de Kubernetes, utilice el comando az aks nodepool upgrade con la marca --node-image-only.

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

Puede comprobar el estado de las imágenes de nodo con el comando kubectl get nodes.

Nota

Este comando puede diferir ligeramente en función del shell que use. Para obtener más información sobre los entornos de Windows o PowerShell consulte la documentación de JSONPath de Kubernetes.

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 el comando 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, utilice el comando az aks nodepool update con la marca --max-surge para configurar el número de nodos utilizados para las actualizaciones. Para obtener más información sobre las ventajas e inconvenientes de varias configuraciones de --max-surge, consulte --max-surge.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --max-surge 33% \
    --no-wait

Puede comprobar el estado de las imágenes de nodo con el comando kubectl get nodes.

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