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