Использование планового обслуживания для планирования и управления обновлениями для кластера Служба Azure Kubernetes

В этой статье показано, как использовать плановое обслуживание для планирования и управления обновлениями образов кластера и узлов в Служба Azure Kubernetes (AKS).

Регулярное обслуживание выполняется в кластере AKS автоматически. Существует два типа операций обслуживания:

  • Обслуживание , инициированное AKS, включает еженедельные выпуски, которые AKS выполняет для обновления кластера с последними функциями и исправлениями.
  • Обслуживание, инициированное пользователем, включает автоматическое обновление кластера и автоматическое обновление операционной системы узла (ОС).

При использовании функции планового обслуживания в AKS можно выполнять оба типа обслуживания в выбранном вами варианте, чтобы свести к минимуму влияние рабочей нагрузки. Вы можете использовать плановое обслуживание для планирования времени автоматического обновления, но включение или отключение планового обслуживания не будет включать или отключать автоматические обновления.

Подготовка к работе

  • В этой статье предполагается, что у вас есть кластер AKS. Если у вас нет кластера AKS, см. статью "Создание кластера AKS".
  • Если вы используете Azure CLI, обновите ее до последней az upgrade версии с помощью команды.

Рекомендации

При использовании планового обслуживания применяются следующие рекомендации.

  • AKS резервирует право на прерывание планового обслуживания для незапланированных, реактивных операций обслуживания, которые являются срочными или критически важными. Эти операции обслуживания могут выполняться даже в течение notAllowedTime или notAllowedDates периодов, определенных в конфигурации.
  • Операции обслуживания считаются лучшими усилиями только и не гарантируются в пределах указанного окна.

Планирование типов конфигурации для планового обслуживания

Три типа конфигурации расписания доступны для планового обслуживания:

  • default — базовая конфигурация для управления выпусками AKS. Выпуски могут занять до двух недель, чтобы развернуть все регионы с первоначального времени доставки из-за безопасного развертывания Azure.

    Выберите default , чтобы запланировать эти обновления таким образом, чтобы это было крайне разрушительным для вас. Вы можете отслеживать состояние текущего выпуска AKS по регионам с помощью еженедельного средства отслеживания выпуска.

  • aksManagedAutoUpgradeSchedule управляет выполнением обновлений кластера, запланированных назначенным каналом автоматического обновления. Вы можете настроить более точно контролируемые параметры каденции и повторения с этой конфигурацией по сравнению default с конфигурацией. Дополнительные сведения об автоматическом обновлении кластера см. в статье "Автоматическое обновление кластера Служба Azure Kubernetes".

  • aksManagedNodeOSUpgradeSchedule определяет, когда выполняется исправление системы безопасности операционной системы узла, запланированное каналом автоматического обновления ОС узла. Вы можете настроить более точно контролируемые параметры каденции и повторения с этой конфигурацией по сравнению default с конфигурацией. Дополнительные сведения о каналах автоматического обновления ОС узла см. в статье Автоматическое исправление и обновление образов узлов кластера AKS.

Рекомендуется использовать aksManagedAutoUpgradeSchedule для всех сценариев обновления кластера и aksManagedNodeOSUpgradeSchedule для всех сценариев исправления безопасности ос узла.

Этот default вариант предназначен исключительно для еженедельных выпусков AKS. Вы можете переключить конфигурацию на default aksManagedAutoUpgradeSchedule конфигурацию или aksManagedNodeOSUpgradeSchedule конфигурацию с помощью az aks maintenanceconfiguration update команды.

Создание периода обслуживания

Примечание.

Если вы используете автоматическое обновление, чтобы обеспечить правильную функциональность, используйте период обслуживания с длительностью 4 часа или более.

Запланированные периоды обслуживания указываются в формате UTC.

Период default обслуживания имеет следующие устаревшие свойства (больше не рекомендуется):

Имя Описание: Default value
timeInWeek default В конфигурации это свойство содержит day и hourSlots значения, определяющие период обслуживания. Нет данных
timeInWeek.day День недели для выполнения обслуживания в default конфигурации. Нет данных
timeInWeek.hourSlots Список часовых слотов для выполнения обслуживания в определенный день в default конфигурации. Нет данных
notAllowedTime Диапазон дат, на которые обслуживание не может выполняться, определяется дочерними свойствамиstart.end Это свойство применимо только при создании периода обслуживания с помощью файла конфигурации. Неприменимо

Примечание.

Начиная с версии API 2023-05-01, используйте приведенные ниже свойства для default настройки.

aksManagedNodeOSUpgradeSchedule Период aksManagedAutoUpgradeSchedule обслуживания и default конфигурация с версии API 2023-05-01 имеет следующие свойства:

Имя Описание: Default value
utcOffset Часовой пояс для обслуживания кластера. +00:00
startDate Дата вступления в силу периода обслуживания. Текущая дата во время создания
startTime Время начала обслуживания в зависимости от часового пояса, определенного utcOffset. Нет данных
schedule Частота обновления. Доступны три типа: Weekly, AbsoluteMonthlyи RelativeMonthly. Нет данных
intervalDays Интервал в днях для выполнения обслуживания. Применимо только к aksManagedNodeOSUpgradeSchedule. Нет данных
intervalWeeks Интервал в неделях для выполнения обслуживания. Нет данных
intervalMonths Интервал в месяцы для выполнения обслуживания. Нет данных
dayOfWeek Указанный день недели для начала обслуживания. Нет данных
durationHours Длительность периода обслуживания для запуска. Нет данных
notAllowedDates Диапазон дат, на которые обслуживание не может выполняться, определяется дочерними свойствамиstart.end Это применимо только при создании периода обслуживания с помощью файла конфигурации. Нет данных

Типы расписаний

Доступны четыре доступных типа расписания: Daily, Weekly, AbsoluteMonthlyи RelativeMonthly.

Weekly, AbsoluteMonthlyи RelativeMonthly типы расписаний применимы только к aksManagedClusterAutoUpgradeSchedule конфигурациям и aksManagedNodeOSUpgradeSchedule конфигурациям. Daily расписания применимы только к aksManagedNodeOSUpgradeSchedule конфигурациям.

Все поля, отображаемые для каждого типа расписания, обязательны.

Расписание Daily может выглядеть следующим образом:

"schedule": {
    "daily": {
        "intervalDays": 3
    }
}

Weekly Расписание может выглядеть как "каждые две недели в пятницу":

"schedule": {
    "weekly": {
        "intervalWeeks": 2,
        "dayOfWeek": "Friday"
    }
}

Расписание AbsoluteMonthly может выглядеть как "каждые три месяца в первый день месяца":

"schedule": {
    "absoluteMonthly": {
        "intervalMonths": 3,
        "dayOfMonth": 1
    }
}

Расписание RelativeMonthly может выглядеть как "каждые два месяца в последний понедельник":

"schedule": {
    "relativeMonthly": {
        "intervalMonths": 2,
        "dayOfWeek": "Monday",
        "weekIndex": "Last"
    }
}

Допустимые значения для weekIndex включенияFirst, , Second, ThirdFourthи Last.

Добавление конфигурации периода обслуживания

Добавьте конфигурацию периода обслуживания в кластер AKS с помощью az aks maintenanceconfiguration add команды.

Первый пример добавляет новую default конфигурацию, которая планирует обслуживание с 1:00 до 2:00 каждый понедельник. Второй пример добавляет новую aksManagedAutoUpgradeSchedule конфигурацию, которая планирует обслуживание для выполнения каждые треть пятницу в период с 12:00 по 8:00 в часовом поясе 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

Примечание.

При использовании default типа конфигурации можно опустить --start-time параметр, чтобы разрешить обслуживание в любое время в течение дня.

Обновление существующего периода обслуживания

Обновите существующую конфигурацию обслуживания с помощью az aks maintenanceconfiguration update команды.

В следующем примере конфигурация обновляется default , чтобы запланировать обслуживание с 2:00 до 3:00 каждый понедельник:

az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2

Вывод списка всех периодов обслуживания в существующем кластере

Вывод списка текущих окон конфигурации обслуживания в кластере az aks maintenanceconfiguration list AKS с помощью команды:

az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster

Отображение определенного периода конфигурации обслуживания в существующем кластере

Просмотрите определенное окно конфигурации обслуживания в кластере az aks maintenanceconfiguration show AKS с помощью команды с параметром --name :

az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule

В следующем примере выходных данных показан период обслуживания для 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
}

Удаление окна конфигурации обслуживания в существующем кластере

Удалите окно конфигурации обслуживания в кластере az aks maintenanceconfiguration delete AKS с помощью команды.

В следующем примере удаляется autoUpgradeSchedule конфигурация обслуживания:

az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule

Вопросы и ответы

  • Как проверить существующие конфигурации обслуживания в кластере?

    Используйте команду az aks maintenanceconfiguration show.

  • Может ли реактивное, незапланированное обслуживание происходит в течение notAllowedTime или notAllowedDates периодов?

    Да. AKS оставляет за собой право разорвать эти окна для незапланированных, реактивных операций обслуживания, которые являются срочными или критически важными.

  • Как узнать, произошло ли событие обслуживания?

    Для выпусков проверьте регион кластера и просмотрите сведения в еженедельные выпуски , чтобы узнать, соответствует ли оно расписанию обслуживания. Чтобы просмотреть состояние автоматических обновлений, просмотрите журналы действий в кластере. Вы также можете искать конкретные события, связанные с обновлением, как упоминалось в разделе "Обновление кластера AKS".

    AKS также выдает события, связанные с обновлением Сетка событий Azure. Дополнительные сведения см. в статье AKS как источник сетки событий.

  • Можно ли одновременно использовать несколько конфигураций обслуживания?

    Да, можно одновременно запускать все три конфигурации: default, aksManagedAutoUpgradeScheduleи aksManagedNodeOSUpgradeSchedule. Если окна перекрываются, AKS решает порядок выполнения.

  • Я настроили период обслуживания, но обновление не произошло. Почему?

    Автоматическое обновление AKS требует определенного времени, обычно не более 15 минут, чтобы принять во внимание период обслуживания. Рекомендуется по крайней мере 15 минут между созданием или обновлением конфигурации обслуживания и запланированным временем начала.

    Кроме того, убедитесь, что кластер запущен при запуске запланированного периода обслуживания. Если кластер остановлен, его плоскость управления освобождена, и никакие операции не могут выполняться.

  • Почему один из пулов агентов обновлен за пределами периода обслуживания?

    Если пул агентов не обновляется (например, так как бюджеты сбоев pod предотвратили его), он может быть обновлен позже за пределами периода обслуживания. Этот сценарий называется "догоняющий обновление". Это позволяет избежать обновления пулов агентов с другой версией, отличной от плоскости управления AKS.

    Другая причина, по которой пул агентов может быть неожиданно обновлен, если не определена конфигурация обслуживания или если она была удалена. В этом случае кластер с автоматическим обновлением , но без конфигурации обслуживания будет обновляться случайным образом (резервное расписание), которое может быть нежелательным временем.

  • Существуют ли рекомендации по настройке обслуживания?

    Мы рекомендуем задать расписание обновлений безопасности операционной системы узла на еженедельную периодичность, если вы используете NodeImage канал, так как новый образ узла поставляется каждую неделю. Вы также можете принять участие в канале SecurityPatch для получения ежедневных обновлений системы безопасности.

    Задайте для расписания автоматического обновления ежемесячное значение, чтобы оставаться в курсе политики поддержки Kubernetes N-2.

    Подробное обсуждение рекомендаций по обновлению и других рекомендаций см . в руководстве по исправлению и обновлению AKS.

  • Можно ли настроить все кластеры в одной подписке для использования одной конфигурации обслуживания?

    Мы не рекомендуем использовать одну конфигурацию обслуживания для нескольких кластеров в одной подписке, так как это может привести к ошибкам регулирования ARM, что приводит к сбою обновления кластера. Вместо этого рекомендуется ошеломить периоды обслуживания для каждого кластера, чтобы избежать этих ошибок.

Следующие шаги