Автоматическое восстановление узлов Службы Azure Kubernetes (AKS)

Область применения: ✔️ AKS Automatic ✔️ AKS Standard

Служба Azure Kubernetes (AKS) постоянно проверяет состояние работоспособности рабочих узлов и выполняет автоматическое восстановление узлов, если они становятся неработоспособными. Платформа виртуальных машин Azure выполняет обслуживание виртуальных машин, на которых возникают проблемы. AKS и Виртуальные машины Azure работают вместе, чтобы минимизировать сбои в работе кластеров.

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

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

Поведение автоматического восстановления узла в зависимости от режима кластера

Оба режима кластера AKS предварительно настроены с автоматическим восстановлением узла:

  • AKS Automatic: предварительно настроен в рамках готовых к промышленной эксплуатации параметров по умолчанию AKS Automatic.
  • AKS Standard: предварительно настроены в кластерах AKS Standard без дополнительной настройки.

Оба режима используют одни и те же проверки работоспособности узла и ту же последовательность восстановления, описанную в этой статье.

Дополнительные сведения о параметрах по умолчанию для автоматической платформы AKS см. в разделе "Что такое Azure Kubernetes Service (AKS) автоматический"

Как AKS проверяет наличие узлов NotReady

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

  • Узел сообщает о состоянии NotReady при последовательных проверках в течение 10-минутного интервала времени.
  • Узел не сообщает о состоянии в течение 10 минут.

Вы можете вручную проверить состояние работоспособности узлов с помощью kubectl get nodes команды.

Принцип работы автоматического восстановления

Примечание.

AKS инициирует операции восстановления с помощью учетной записи пользователя aks-remediator.

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

  1. AKS перезагружает узел.
  2. Если узел остается неработоспособным после перезагрузки, AKS повторно возвращает узел.
  3. Если узел остается неработоспособным после повторного воспроизведения и он является узлом Linux, AKS повторно развертывает узел.

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

Факторы, учитываемые при производстве

Автоматическое восстановление узла — это ключевой механизм обеспечения отказоустойчивости, но сочетайте его с практиками отказоустойчивости на уровне рабочих нагрузок:

  • Выполнение критически важных рабочих нагрузок с несколькими репликами.
  • Используйте PodDisruptionBudgets и проверки готовности, чтобы уменьшить заметное для пользователей влияние.
  • Отслеживайте действия восстановления и события ошибок для обнаружения повторяющихся проблем с узлом.
  • Включите время автоматического восстановления в SLO/SLA и планирование реагирования на инциденты.

Ограничения

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

AKS может не выполнять автоматическое восстановление в следующих сценариях:

  • Ошибка конфигурации сети предотвращает отчеты о состоянии узла.
  • Не удается зарегистрировать узел в качестве работоспособного узла.
  • Узел имеет любой из следующих фрагментов:
    • node.cloudprovider.kubernetes.io/shutdown
    • ToBeDeletedByClusterAutoscaler
  • Узел обновляется и имеет следующие аннотации:
    • "cluster-autoscaler.kubernetes.io/scale-down-disabled": "true"
    • "kubernetes.azure.com/azure-cluster-autoscaler-scale-down-disabled-reason": "upgrade"

Мониторинг автоматического восстановления узла с помощью событий Kubernetes

Когда AKS выполняет автоматическое восстановление узла, она создает события Kubernetes от источника aks-auto-repair. Следующие события отображаются в объекте узла при автоматическом восстановлении.

Дополнительные сведения о доступе, хранении и предупреждении о событиях Kubernetes см. в статье "Использование событий Kubernetes для устранения неполадок в AKS".

Причина Сообщение о событии Описание
NodeRebootStart Автоматическое восстановление узла инициирует действие перезагрузки из-за сохранения состояния NotReady в течение более пяти минут. Это событие уведомляет вас о том, что перезагрузка будет выполнена на узле. Это действие является первым в общей последовательности автоматического восстановления узла.
Завершение перезагрузки узла Действие перезагрузки из автоматического восстановления узла завершено. Издается после завершения перезагрузки в узле. Это событие не указывает состояние работоспособности узла (работоспособное или неработоспособное) после выполнения перезагрузки.
NodeReimageStart Автоматическое восстановление узла запускает повторное создание образа, поскольку состояние NotReady сохраняется более пяти минут. Это событие уведомляет вас о том, когда повторная версия будет выполнена на узле.
NodeReimageEnd Действие повторного воспроизведения из автоматического восстановления узла завершено. Событие генерируется после завершения восстановления образа на узле. Это событие не указывает состояние работоспособности узла (работоспособное или неработоспособное) после выполнения повторного просмотра.
NodeRedeployStart Автоматическое восстановление узла инициирует действие повторного развертывания из-за сохранения состояния NotReady более пяти минут. Это событие уведомляет вас о том, что на вашем узле скоро будет выполнено повторное развертывание. Повторное развертывание — это последнее действие в последовательности автоматического восстановления узла.
NodeRedeployEnd Завершено выполнение действия повторного развертывания в рамках автоматического восстановления узла. Отправляется после завершения повторного развертывания на узле. Это событие не указывает состояние работоспособности узла (работоспособное или неработоспособное) после повторного развертывания.

Если ошибки возникают во время автоматического восстановления узла, AKS выдает следующие события с подробным сообщением об ошибке. Дополнительные сведения см. в разделе "Устранение распространенных ошибок автоматического восстановления узла".

Примечание.

Код ошибки в следующих сообщениях событий зависит от сообщаемой ошибки.

Причина Сообщение о событии Описание
NodeRebootError Попытка перезагрузки для автоматического восстановления узла не удалась из-за сбоя операции. См. сведения об ошибке здесь: код ошибки Выдается при возникновении ошибки в действии перезагрузки.
NodeReimageError Действие автоматического восстановления образа узла не удалось из-за сбоя операции. См. сведения об ошибке здесь: код ошибки Вызывается при возникновении ошибки во время повторного создания образа.
NodeRedeployError Не удалось выполнить автоматическое восстановление узла в результате сбоя операции. См. сведения об ошибке здесь: код ошибки Создаётся сигнал об ошибке при повторном развертывании.