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.28.9 y se enumeran las versiones disponibles en
upgrades
:{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.28.9", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.29.4" }, { "isPreview": null, "kubernetesVersion": "1.29.2" } ] }, ... }
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.28
, el clúster se actualiza a 1.28.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
Se le pedirá que confirme la operación de actualización y confirme que desea actualizar el plano de control y todos los grupos de nodos a la versión seleccionada de Kubernetes:
Are you sure you want to perform this operation? (y/N): y Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
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.29.2. Observe que
kubernetesVersion
ahora muestra 1.29.2:{ ... "agentPoolProfiles": [ { ... "count": 3, "currentOrchestratorVersion": "1.29.2", "maxPods": 110, "name": "nodepool1", "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202405.27.0", "orchestratorVersion": "1.29.2", "osType": "Linux", "upgradeSettings": { "drainTimeoutInMinutes": null, "maxSurge": "10%", "nodeSoakDurationInMinutes": null, "undrainableNodeBehavior": null }, "vmSize": "Standard_DS2_v2", ... } ], ... "currentKubernetesVersion": "1.29.2", "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.29.2", "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 enpatch
.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:
LAST SEEN TYPE REASON OBJECT MESSAGE ... 5m Normal Drain node/aks-nodepool1-96663640-vmss000000 Draining node: aks-nodepool1-96663640-vmss000000 5m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Deleting node aks-nodepool1-96663640-vmss000000 from API server 4m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Successfully reimaged node: aks-nodepool1-96663640-vmss000000 4m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Successfully upgraded node: aks-nodepool1-96663640-vmss000000 4m Normal Drain node/aks-nodepool1-96663640-vmss000000 Draining node: aks-nodepool1-96663640-vmss000000 ...
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.29.2 1.29.2 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.
Azure Kubernetes Service