Uso del mantenimiento planeado para programar y controlar las actualizaciones del clúster de Azure Kubernetes Service
En este artículo se muestra cómo usar el mantenimiento planeado para programar y controlar las actualizaciones de imágenes de clúster y nodo en Azure Kubernetes Service (AKS).
El mantenimiento normal se realiza automáticamente en el clúster de AKS. Hay dos tipos de operaciones de mantenimiento:
- El mantenimiento iniciado por AKS implica las versiones semanales que AKS realiza para mantener el clúster actualizado con las características y correcciones más recientes.
- El mantenimiento iniciado por el usuario incluye actualizaciones automáticas del clúster y del sistema operativo (SO) del nodo.
Al usar la característica de mantenimiento planeado en AKS, puede ejecutar ambos tipos de mantenimiento en una cadencia de su elección para minimizar el impacto en la carga de trabajo. Use el mantenimiento planeado para programar la temporalidad de las actualizaciones automáticas, pero habilitar o deshabilitar el mantenimiento planeado no habilitará ni deshabilitará las actualizaciones automáticas.
Antes de empezar
- En este artículo se supone que ya tiene un clúster de AKS. Si no tiene un clúster de AKS, consulte Creación de un clúster de AKS.
- Si usa la CLI de Azure, actualice a la versión más reciente mediante el comando
az upgrade
.
Consideraciones
Al usar mantenimiento planeado, se aplican las siguientes consideraciones:
- AKS se reserva el derecho de interrumpir las ventanas de mantenimiento planeado para operaciones de mantenimiento no planeadas, reactivas que sean urgentes o críticas. Estas operaciones de mantenimiento pueden incluso ejecutarse durante los períodos de
notAllowedTime
onotAllowedDates
definidos en la configuración. - Las operaciones de mantenimiento se consideran mejor esfuerzo solo y no se garantiza que se produzcan dentro de una ventana especificada.
Programar tipos de configuración para el mantenimiento planeado
Hay tres tipos de configuración de programación disponibles para el mantenimiento planeado:
default
es una configuración básica para controlar las versiones de AKS. Las versiones pueden tardar hasta dos semanas en implementarse en todas las regiones desde el momento inicial del envío, debido a las prácticas de implementación seguras de Azure.Elija
default
para programar estas actualizaciones de la forma que le resulte menos molesta. Puede supervisar el estado de una versión de AKS en curso por región con el seguimiento de versiones semanales.aksManagedAutoUpgradeSchedule
controla cuándo realizar actualizaciones de clúster programadas por el canal de actualización automática designado. Puede configurar opciones de cadencia y periodicidad más controladas con esta configuración en comparación con la configuracióndefault
. Para más información sobre la actualización automática del clúster, consulte Actualización automática de un clúster de Azure Kubernetes Service.aksManagedNodeOSUpgradeSchedule
controla cuándo se debe realizar la aplicación de revisiones de seguridad del sistema operativo del nodo programada por el canal de actualización automática del sistema operativo del nodo. Puede configurar opciones de cadencia y periodicidad más controladas con esta configuración en comparación con la configuracióndefault
. Para obtener más información sobre los canales de actualización automática del sistema operativo del nodo, consulte Aplicar revisiones y actualizar automáticamente imágenes de nodo de clúster de AKS.
Se recomienda usar aksManagedAutoUpgradeSchedule
en todos los escenarios de actualización del clúster y aksManagedNodeOSUpgradeSchedule
en todos los escenarios de actualización de seguridad del sistema operativo del nodo.
La opción default
está pensada exclusivamente para versiones semanales de AKS. Puede cambiar la configuración default
a la configuración aksManagedAutoUpgradeSchedule
o aksManagedNodeOSUpgradeSchedule
mediante el comando az aks maintenanceconfiguration update
.
Creación de una ventana de mantenimiento
Nota:
Cuando se usa la actualización automática, para garantizar una funcionalidad adecuada, use una ventana de mantenimiento con una duración de cuatro horas o más.
Las ventanas de mantenimiento planeado se especifican en hora universal coordinada (UTC).
Una ventana de mantenimiento de default
tiene las siguientes propiedades heredadas (ya no se recomienda):
Nombre | Descripción | Default value |
---|---|---|
timeInWeek |
En una configuración default , esta propiedad contiene los valores day y hourSlots que definen una ventana de mantenimiento. |
No aplicable |
timeInWeek.day |
El día de la semana para realizar el mantenimiento en una configuración default |
No aplicable |
timeInWeek.hourSlots |
Lista de intervalos de tiempo de larga duración para realizar el mantenimiento en un día determinado en una configuración default . |
No aplicable |
notAllowedTime |
Intervalo de fechas que el mantenimiento no se puede ejecutar, determinado por las propiedades secundariasstart y end . Esta propiedad solo es aplicable cuando se crea la ventana de mantenimiento mediante un archivo de configuración. |
No aplicable |
Nota:
A partir de la versión de API 2023-05-01 en adelante, use las siguientes propiedades para la configuración de default
.
Una ventana de mantenimiento de aksManagedAutoUpgradeSchedule
o aksManagedNodeOSUpgradeSchedule
, y una configuración de default
desde la versión 2023-05-01 de la API en adelante tiene las siguientes propiedades:
Nombre | Descripción | Default value |
---|---|---|
utcOffset |
Zona horaria para el mantenimiento del clúster. | +00:00 |
startDate |
La fecha en la que comienza a surtir efecto la ventana de mantenimiento. | La fecha actual en la hora de creación. |
startTime |
Hora de inicio del mantenimiento, en función de la zona horaria determinada por utcOffset . |
No aplicable |
schedule |
Frecuencia de actualización. Hay disponibles tres tipos: Weekly , AbsoluteMonthly , y RelativeMonthly . |
No aplicable |
intervalDays |
Intervalo en días para las ejecuciones de mantenimiento. Solo es aplicable a aksManagedNodeOSUpgradeSchedule . |
No aplicable |
intervalWeeks |
El intervalo en semanas para ejecuciones de mantenimiento. | No aplicable |
intervalMonths |
El intervalo en meses para ejecuciones de mantenimiento. | No aplicable |
dayOfWeek |
El día especificado de la semana para que comience el mantenimiento. | No aplicable |
durationHours |
La duración de la ventana para que se ejecute el mantenimiento. | No aplicable |
notAllowedDates |
Intervalo de fechas que el mantenimiento no se puede ejecutar, determinado por las propiedades secundariasstart y end . Solo es aplicable cuando se crea la ventana de mantenimiento mediante un archivo de configuración. |
No aplicable |
Tipos de programación
Hay cuatro tipos de programación disponibles: Daily
, Weekly
, AbsoluteMonthly
, y RelativeMonthly
.
Los tipos de horario Weekly
, AbsoluteMonthly
y RelativeMonthly
son aplicables solo a las configuraciones aksManagedClusterAutoUpgradeSchedule
y aksManagedNodeOSUpgradeSchedule
. Daily
programaciones solo se aplican a las configuraciones de aksManagedNodeOSUpgradeSchedule
.
Se requieren todos los campos que se muestran para cada tipo de programación.
Una programación Daily
podría ser similar a "cada tres días":
"schedule": {
"daily": {
"intervalDays": 3
}
}
Una programación de Weekly
podría parecerse a "cada dos semanas el viernes":
"schedule": {
"weekly": {
"intervalWeeks": 2,
"dayOfWeek": "Friday"
}
}
Una programación de AbsoluteMonthly
podría parecerse a "cada tres meses en el primer día del mes":
"schedule": {
"absoluteMonthly": {
"intervalMonths": 3,
"dayOfMonth": 1
}
}
Una programación de RelativeMonthly
podría ser similar a "cada dos meses del último lunes":
"schedule": {
"relativeMonthly": {
"intervalMonths": 2,
"dayOfWeek": "Monday",
"weekIndex": "Last"
}
}
Los valores válidos para weekIndex
incluyen First
, Second
, Third
, Fourth
y Last
.
Adición de una configuración de ventana de mantenimiento
Agregue una configuración de ventana de mantenimiento a un clúster de AKS mediante el comando az aks maintenanceconfiguration add
.
En el primer ejemplo se agrega una nueva configuración de default
que programa el mantenimiento para ejecutarse de 1:00 a 2:00 a. m. todos los lunes. En el segundo ejemplo se agrega una nueva configuración de aksManagedAutoUpgradeSchedule
que programa el mantenimiento para ejecutarse cada tercer viernes entre las 12:00 a. m. y las 8:00 a. m., en la zona horaria de UTC+5:30
.
# Add a new default configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1
# Add a new aksManagedAutoUpgradeSchedule configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00
Nota:
Al usar un tipo de configuración default
, puede omitir el parámetro --start-time
para permitir el mantenimiento en cualquier momento durante un día.
Actualización de una ventana de mantenimiento existente
Actualice una configuración de mantenimiento existente mediante el comando az aks maintenanceconfiguration update
.
En el ejemplo siguiente se actualiza la configuración de default
para programar el mantenimiento para que se ejecute de 2:00 a 3:00 a. m. todos los lunes:
az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2
Enumeración de todas las ventanas de mantenimiento en un clúster existente
Enumere las ventanas de configuración de mantenimiento actuales del clúster de AKS mediante el comando az aks maintenanceconfiguration list
:
az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster
Mostrar una ventana de configuración de mantenimiento específica en un clúster existente
Vea una ventana de configuración de mantenimiento específica en el clúster de AKS mediante el comando az aks maintenanceconfiguration show
con el parámetro --name
:
az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule
En la salida de ejemplo siguiente se muestra la ventana de mantenimiento para aksManagedAutoUpgradeSchedule
:
{
"id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
"maintenanceWindow": {
"durationHours": 4,
"notAllowedDates": [
{
"end": "2024-01-05",
"start": "2023-12-23"
}
],
"schedule": {
"absoluteMonthly": {
"dayOfMonth": 1,
"intervalMonths": 3
},
"daily": null,
"relativeMonthly": null,
"weekly": null
},
"startDate": "2023-01-20",
"startTime": "09:00",
"utcOffset": "-08:00"
},
"name": "aksManagedAutoUpgradeSchedule",
"notAllowedTime": null,
"resourceGroup": "myResourceGroup",
"systemData": null,
"timeInWeek": null,
"type": null
}
Eliminación de una ventana de configuración de mantenimiento en un clúster existente
Elimine una ventana de configuración de mantenimiento en el clúster de AKS mediante el comando az aks maintenanceconfiguration delete
.
En el ejemplo siguiente se elimina la configuración de mantenimiento de autoUpgradeSchedule
:
az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule
Preguntas más frecuentes
¿Cómo puedo comprobar las configuraciones de mantenimiento existentes en mi clúster?
Use el comando
az aks maintenanceconfiguration show
.¿También se puede producir un mantenimiento reactivo y no planeado durante los periodos
notAllowedTime
onotAllowedDates
?Sí. AKS se reserva el derecho de interrumpir estas ventanas para las operaciones de mantenimiento no planeadas y reactivas que sean urgentes o críticas.
¿Cómo puedo saber si se ha producido un evento de mantenimiento?
En el caso de las versiones, compruebe la región del clúster y busque información en versiones semanales para ver si coincide con la programación de mantenimiento. Para ver el estado de las actualizaciones automáticas, busque registros de actividad en el clúster. También puede buscar eventos específicos relacionados con la actualización, como se mencionó en Actualización de un clúster de AKS.
AKS también emite eventos de Azure Event Grid relacionados con la actualización. Para obtener más información, consulte AKS como origen de Event Grid.
¿Puedo usar más de una configuración de mantenimiento al mismo tiempo?
Sí, puede ejecutar las tres configuraciones simultáneamente:
default
,aksManagedAutoUpgradeSchedule
, yaksManagedNodeOSUpgradeSchedule
. Si las ventanas se superponen, AKS decide el orden de ejecución.He configurado una ventana de mantenimiento, pero no se ha producido la actualización. ¿Por qué?
La actualización automática de AKS necesita una cierta cantidad de tiempo, habitualmente menos de 15 minutos, para tener en cuenta la ventana de mantenimiento. Se recomiendan al menos 15 horas entre la creación o actualización de una configuración de mantenimiento y la hora de inicio programada.
Además, asegúrese de que el clúster se inicia cuando se inicia la ventana de mantenimiento planeado. Si se detiene el clúster, se desasigna su plano de control y no se puede realizar ninguna operación.
¿Por qué se ha actualizado uno de mis grupos de agentes fuera de la ventana de mantenimiento?
Si no se actualiza un grupo de agentes (por ejemplo, porque los presupuestos de interrupción del pod lo impedían), podría actualizarse más adelante, fuera de la ventana de mantenimiento. Este escenario se denomina "actualización de puesta al día". Evita permitir que los grupos de agentes se actualicen con una versión diferente del plano de control de AKS.
Otro motivo por el que un grupo de agentes se puede actualizar inesperadamente es cuando no hay ninguna configuración de mantenimiento definida o si se ha eliminado. En ese caso, un clúster con actualización automática, pero sin una configuración de mantenimiento se actualizará en momentos aleatorios (programación de reserva), lo que podría ser un plazo no deseado.
¿Hay algún procedimiento recomendado para las configuraciones de mantenimiento?
Se recomienda establecer la programación de actualizaciones de seguridad del sistema operativo del nodo en una cadencia semanal si usa el canal
NodeImage
, ya que se envía una nueva imagen de nodo cada semana. También puede optar por el canalSecurityPatch
para recibir actualizaciones de seguridad diarias.Establezca el programa de actualización automática en una cadencia mensual para mantenerse al día con la directiva de soporte técnico de Kubernetes N-2.
Para obtener una explicación detallada de los procedimientos recomendados de actualización y otras consideraciones, consulte Guía de actualización y revisión de AKS.
¿Puedo configurar todos mis clústeres de una misma suscripción para que usen la misma configuración de mantenimiento?
No se recomienda usar la misma configuración de mantenimiento para varios clústeres de una misma suscripción, ya que, al hacerlo, se pueden producir errores de limitación de ARM, lo que provoca un error en las actualizaciones del clúster. En su lugar, se recomienda escalonar las ventanas de mantenimiento de cada clúster para evitar estos errores.
Pasos siguientes
- Para empezar a actualizar el clúster de AKS, consulte Opciones de actualización para clústeres de AKS.
Azure Kubernetes Service