Бөлісу құралы:


Автоматическое обновление кластера Служба Azure Kubernetes (AKS) при критических изменениях API

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

Обзор

Чтобы оставаться в поддерживаемой версии Kubernetes, необходимо обновить кластер по крайней мере один раз в год и подготовиться ко всем возможным сбоям. Эти нарушения включают в себя те, которые вызваны критическими изменениями API, нерекомендуемыми и зависимостями, такими как Helm и интерфейс хранилища контейнеров (CSI). Это может быть трудно предвидеть эти перебои и перенести критически важные рабочие нагрузки без каких-либо простоев.

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

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

Перед началом работы убедитесь, что выполнены следующие предварительные требования:

  • Операция обновления — это дополнительное изменение версии Kubernetes для плоскости управления кластером.
  • Обновляемая версия Kubernetes — 1.26 или более поздняя.
  • Последнее использование устаревших API-интерфейсов для целевой версии, на которую выполняется обновление, должно происходить в течение 12 часов до операции обновления. AKS записывает ежечасное использование, поэтому любое использование устаревших API в течение одного часа не гарантируется в обнаружении.

Устранение остановленных операций обновления

Если выполнены предварительные требования, попробуйте выполнить обновление и получите сообщение об ошибке, аналогичное следующему примеру сообщения об ошибке:

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

У вас есть два варианта устранения проблемы: вы можете удалить использование устаревших API (рекомендуется) или обойти проверку, чтобы игнорировать изменения API.

  1. В портал Azure перейдите к ресурсу кластера и выберите "Диагностика и решение проблем"

  2. Выберите "Создать", "Обновить", "Удалить" и "Масштабирование>" API Kubernetes нерекомендуем.

    Снимок экрана: портал Azure с разделом

  3. Подождите 12 часов с момента последнего нерекомендуемого использования API. Проверьте команду в нерекомендуемом использовании API, чтобы узнать, является ли она часовой. Если это часы, вы можете ждать, пока использование не будет нулю. (Кроме того, можно проверить использование api прошлых версий, включив его .Аналитика контейнеров и изучение журналов аудита kube.)

  4. Повторите обновление кластера.

Обход проверки для пропуска изменений API

Примечание.

Этот метод требует использования Azure CLI версии 2.53 или более поздней. Если у aks-preview вас установлено расширение CLI, необходимо обновить версию или более позднюю версию 0.5.154 . Этот метод не рекомендуется, так как устаревшие API в целевой версии Kubernetes могут не работать в долгосрочной перспективе. Мы рекомендуем удалить их как можно скорее после завершения обновления.

  1. Обходить проверку, чтобы игнорировать критические изменения API с помощью az aks update команды. enable-force-upgrade Укажите флаг и задайте upgrade-override-until свойство, чтобы определить конец окна, во время которого выполняется обход проверки. Если значение не задано, по умолчанию окно по умолчанию равно трем дням с текущего времени. Указанная дата и время должны находиться в будущем.

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    Примечание.

    Z — это конструктор зоны для нулевого смещения UTC/GMT, также известного как "Zulu". В этом примере для конца окна задано 13:00:00 значение GMT. Дополнительные сведения см. в разделе "Объединенные представления даты и времени".

  2. Повторите обновление кластера с помощью az aks upgrade команды.

    az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION
    

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

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