Автоматическое обновление кластера Служба 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.
Удаление использования устаревших API (рекомендуется)
В портал Azure перейдите к ресурсу кластера и выберите "Диагностика и решение проблем"
Выберите "Создать", "Обновить", "Удалить" и "Масштабирование>" API Kubernetes нерекомендуем.
Подождите 12 часов с момента последнего нерекомендуемого использования API. Команды только для чтения исключены из устаревшего использования API, а именно Get/List/Watch.( Вы также можете проверить прошлое использование API, включив аналитику контейнеров и изучая журналы аудита kube.)
Повторите обновление кластера.
Обход проверки для пропуска изменений API
Примечание.
Этот метод требует использования Azure CLI версии 2.57 или более поздней. Если у вас установлено расширение CLI предварительной версии, необходимо обновить версию или более позднюю версию 3.0.0b10
. Этот метод не рекомендуется, так как устаревшие API в целевой версии Kubernetes могут не работать в долгосрочной перспективе. Мы рекомендуем удалить их как можно скорее после завершения обновления.
Обходить проверку, чтобы игнорировать критические изменения API и вызывать обновление.
enable-force-upgrade
Укажите флаг и задайтеupgrade-override-until
свойство, чтобы определить конец окна, во время которого выполняется обход проверки. Если значение не задано, по умолчанию окно по умолчанию равно трем дням с текущего времени. Указанная дата и время должны находиться в будущем.az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
Примечание.
Z
— это конструктор зоны для нулевого смещения UTC/GMT, также известного как "Zulu". В этом примере для конца окна задано13:00:00
значение GMT. Дополнительные сведения см. в разделе "Объединенные представления даты и времени".
Следующие шаги
В этой статье показано, как остановить автоматическое обновление кластера AKS при критических изменениях API. Дополнительные сведения о параметрах обновления для кластеров AKS см. в разделе "Параметры обновления" для кластеров Служба Azure Kubernetes (AKS).
Azure Kubernetes Service