Tutorial: Actualización de Kubernetes en 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, aprenderá a:
- Identificar las versiones de Kubernetes actuales y disponibles.
- Actualizar los nodos de Kubernetes.
- Validar una actualización correcta.
Antes de empezar
En tutoriales anteriores se empaquetó una aplicación en una imagen de contenedor y se cargó esta imagen de contenedor en Azure Container Registry (ACR). También ha creado un clúster de AKS. Luego la aplicación se implementó en el clúster de AKS. Si no ha realizado estos pasos, pero desea continuar, comience con el Tutorial 1: Preparación de una aplicación para AKS.
- Si usa la CLI de Azure, este tutorial requiere que ejecute 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 usa Azure PowerShell, en este tutorial es necesario que ejecute 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 un clúster, use el comando az aks get-upgrades para comprobar qué versiones de Kubernetes están disponibles.
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
En el siguiente ejemplo, la versión actual es la 1.18.10 y las versiones disponibles se muestran en actualizaciones.
{
"agentPoolProfiles": null,
"controlPlaneProfile": {
"kubernetesVersion": "1.18.10",
...
"upgrades": [
{
"isPreview": null,
"kubernetesVersion": "1.19.1"
},
{
"isPreview": null,
"kubernetesVersion": "1.19.3"
}
]
},
...
}
Actualizar un clúster
Los nodos de AKS se acordonarán y vaciarán minuciosamente para minimizar cualquier posible interrupción en las aplicaciones en ejecución. Los pasos siguientes se realizan durante este proceso:
- El programador de Kubernetes impide que se programen pods adicionales en un nodo que se va a actualizar.
- Los pods en ejecución en el nodo se programan en otros nodos del clúster.
- Se crea un nodo nuevo que ejecuta los componentes más recientes de Kubernetes.
- Cuando el nuevo nodo está listo y se ha unido al clúster, el programador de Kubernetes comienza a ejecutar pods en el nuevo nodo.
- El nodo antiguo se elimina y el siguiente nodo del clúster comienza el proceso de acordonamiento y purga.
Nota:
Si no se especifica ninguna revisión, el clúster se actualizará 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 actualizará a 1.21.9
.
Cuando se actualiza según la versión secundaria de alias, solo se admite una versión secundaria superior. Por ejemplo, si se actualiza de 1.20.x
a 1.20
, no se desencadenará una actualización a la revisión 1.20
de disponibilidad general más reciente, pero si se actualiza a 1.21
, sí se desencadenará una actualización a la revisión 1.21
de disponibilidad general más reciente.
Use el comando az aks upgrade para actualizar el clúster de AKS.
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.19.1. Observe que ahora en kubernetesVersion se puede ver 1.19.1.
{
"agentPoolProfiles": [
{
"count": 3,
"maxPods": 110,
"name": "nodepool1",
"osType": "Linux",
"storageProfile": "ManagedDisks",
"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.19.1",
"location": "eastus",
"name": "myAKSCluster",
"type": "Microsoft.ContainerService/ManagedClusters"
}
Visualización de los eventos de actualización
Al actualizar el clúster, pueden producirse los siguientes eventos de Kubernetes en los nodos:
- Sobrecarga: se crea un nodo de sobrecarga.
- Purga: los pods se expulsan del nodo. Cada pod tiene un tiempo de espera de 5 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.
Use kubectl get events
para mostrar eventos en los espacios de nombres predeterminados mientras se ejecuta una actualización.
kubectl get events
La salida de ejemplo siguiente muestra algunos de los eventos anteriores que se enumeran 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 realizó 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.19.1:
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn
------------ ---------- --------------- ------------------- ------------------------ ------------------- ----------------------------------------------------------------
myAKSCluster eastus myResourceGroup 1.19.1 1.19.1 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. Los nodos de Kubernetes se ejecutan en máquinas virtuales de Azure y seguirán acumulando cargos, aunque no se use el clúster.
Use el comando az group delete para quitar el grupo de recursos, el servicio de contenedor y todos los recursos relacionados.
az group delete --name myResourceGroup --yes --no-wait
Nota
Cuando elimina el clúster, la entidad de servicio Azure Active Directory (AAD) 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.