Compartir a través de


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:

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 o notAllowedDates 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ón default. 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ón default. 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 o notAllowedDates ?

    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, y aksManagedNodeOSUpgradeSchedule. 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 canal SecurityPatch 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