Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены технические основы для обновлений кластера Azure Kubernetes Service (AKS), охватывая варианты обновления и распространенные сценарии. Для подробного руководства, адаптированного к вашим потребностям, используйте пути навигации на основе сценариев в конце этой статьи.
Описание этой статьи
Эта техническая справка предоставляет комплексные основы обновления AKS по следующим вопросам:
- Варианты обновления: ручной и автоматический, и когда следует использовать каждый из них.
- Распространенные сценарии обновления с определенными рекомендациями.
- Методы оптимизации для производительности и минимального сбоя.
- Рекомендации по устранению неполадок с пропускной способностью, отводом и временными параметрами.
- Процессы проверки и проверки перед обновлением.
Этот центр лучше всего поможет вам понять механику обновления, устранить проблемы, оптимизировать параметры обновления и узнать о технической реализации.
Дополнительные сведения см. в следующих статьях:
- Сведения об обновлении рабочих кластеров AKS см. в стратегиях обновления рабочей среды AKS.
- Чтобы получить шаблоны обновления для кластеров AKS с рабочими нагрузками с сохранением состояния, ознакомьтесь с шаблонами обновления рабочих нагрузок с сохранением состояния.
- Чтобы использовать центр сценариев, чтобы помочь вам выбрать правильный подход к обновлению AKS, см. статью "Сценарии обновления AKS". Выберите свой путь.
Если вы не знакомы с обновлениями AKS, начните с центра сценариев обновления для интерактивной помощи на основе сценариев.
Быстрая навигация
| Ваша ситуация | Рекомендуемый путь |
|---|---|
| Для рабочего кластера требуется обновление | Стратегии обновления рабочей среды |
| Рабочие нагрузки базы данных и состояния | Шаблоны рабочих нагрузок с отслеживанием состояния |
| Первое обновление или базовый кластер | Базовое обновление кластера AKS |
| Несколько сред или парка | Центр сценариев обновления |
| Пулы узлов или узлы Windows | Обновления пула узлов |
| Только конкретный пул узлов | Обновление пула отдельных узлов |
Опции обновления
Выполнение обновлений вручную
Обновления вручную позволяют управлять обновлением кластера до новой версии Kubernetes. Эти обновления полезны для тестирования или направления на определенную версию.
- Обновление кластера AKS
- Обновление нескольких кластеров AKS с помощью Диспетчера флотов Azure Kubernetes
- Обновление образа узла
- Настройка обновления узлов при увеличении нагрузки
- Обработка обновлений узловой ОС
Настройка автоматических обновлений
Автоматические обновления поддерживают кластер в актуальной и поддерживаемой версии. Используйте эти обновления, если вы хотите автоматизировать параметры:
- Автоматическое обновление кластера AKS
- Автоматическое обновление нескольких кластеров AKS с помощью Azure Kubernetes Fleet Manager
- Использование планового обслуживания для планирования и контроля обновлений
- Автоматически прекращать обновление кластера AKS при критических изменениях API (предварительная версия)
- Автоматическое обновление образов операционной системы узла кластера AKS
- Автоматическое применение обновлений безопасности к узлам AKS с помощью действий GitHub
Особые рекомендации по пулам узлов, охватывающим несколько зон доступности
AKS использует принцип наилучшего усилия для балансировки зон в группах узлов. Во время волны обновления зоны для узлов повышения нагрузки в масштабируемых наборах виртуальных машин неизвестны заранее, что может временно вызвать несбалансированную конфигурацию зон. AKS удаляет узлы всплеска после обновления и восстанавливает исходный баланс зоны.
Чтобы поддерживать баланс зон, увеличивайте нагрузку кратно трём узлам. Запросы на постоянный том, использующие диски локально избыточного хранилища Azure, привязаны к определённой зоне и могут привести к простою, если дополнительные узлы находятся в другой зоне. Используйте бюджет прерывания pod (PDB) для обеспечения высокой доступности во время дренажа.
Оптимизация обновлений для повышения производительности и минимизации сбоев
Объедините запланированное время обслуживания, максимальный всплеск нагрузки, PDB, время простоя узла на истечение и время стабилизации узла, чтобы повысить вероятность успешного обновления с низким уровнем нарушений:
- Период планового обслуживания: планирование автоматического обновления в периоды низкого трафика. Рекомендуется по крайней мере четыре часа.
- Максимальный всплеск: более высокие значения ускоряют процесс обновления, но могут нарушить рабочий процесс. Для рабочей среды рекомендуется использовать 33%.
- Максимальная недоступность: используйте, если емкость ограничена.
- Бюджет прерывания pod: Ограничивает количество pod, отключаемых во время обновлений. Проверка для службы.
- Тайм-аут вывода узла из эксплуатации: настройка длительности ожидания выгрузки контейнера. Значение по умолчанию — 30 минут.
- Время выдержки узла: поэтапные обновления помогают свести к минимуму время простоя. Значение по умолчанию — 0 минут.
| настройки обновления | Использование дополнительных узлов | Ожидаемое поведение |
|---|---|---|
maxSurge=5, maxUnavailable=0 |
5 узлов всплеска | Пять узлов подготовлены к обновлению. |
maxSurge=5, maxUnavailable=0 |
0-4 узла всплеска | Обновление завершается сбоем из-за нехватки узлов всплеска. |
maxSurge=0, maxUnavailable=5 |
N/A | Для обновления удаляются пять существующих узлов. |
Замечание
Перед обновлением проверьте критические изменения API и просмотрите заметки о выпуске AKS , чтобы избежать сбоев.
Проверки, используемые в процессе обновления
AKS выполняет проверку перед обновлением, чтобы обеспечить работоспособность кластера:
- Изменения API, нарушающие совместимость: Обнаруживает устаревшие API.
- Версия обновления Kubernetes: Гарантирует допустимый путь обновления.
-
Конфигурация PDB: Проверяет некорректную настройку PDB (например,
maxUnavailable=0). - Квота: Подтверждается, что квоты достаточно для узлов перегрузки.
- Подсеть: Проверяет достаточные IP-адреса.
- Сертификаты/служебные субъекты: Обнаруживает истекшие учетные данные.
Эти проверки помогают свести к минимуму сбои обновления и обеспечить раннее представление о проблемах.
Распространенные сценарии и рекомендации по обновлению
Сценарий 1. Ограничения емкости
Если кластер ограничен уровнем продукта или региональной емкостью, обновления могут не удаться, если невозможно подготовить дополнительные узлы. Эта ситуация распространена с специализированными уровнями продуктов (например, узлами GPU) или в регионах с ограниченными ресурсами. Такие ошибки, как SKUNotAvailable, AllocationFailedили OverconstrainedAllocationRequest могут возникать, если maxSurge задано слишком большое значение для доступной емкости.
Рекомендации по предотвращению или разрешению
- Используйте
maxUnavailableдля обновления, используя существующие узлы вместо добавления новых. Дополнительные сведения см. в разделе "Настройка недоступных узлов во время обновления". - Снизьте
maxSurge, чтобы уменьшить дополнительные потребности в емкости. Для получения дополнительной информации смотрите Настройка обновления узлового скачка. - Для обновлений, предназначенных только для обеспечения безопасности, используйте образы обновлений безопасности, которые не требуют наличия дополнительных узлов. Дополнительные сведения см. в разделе "Применение обновлений системы безопасности и ядра" к узлам Linux в службе Azure Kubernetes.
Сценарий 2. Сбои очистки узлов и PDOB-файлы
Обновления требуют очистки узлов (вытеснение контейнеров). Утечки могут завершиться сбоем, если модули pod медленно завершаются или строгие бюджеты нарушений pod (PDBS) блокируют вытеснения pod.
Пример ошибки:
Code: UpgradeFailed
Message: Drain node ... failed when evicting pod ... Cannot evict pod as it would violate the pod's disruption budget.
Вариант 1. Принудительное обновление (обход PDB)
Предупреждение
Принудительное обновление игнорирует ограничения бюджета нарушений Pod (PDB) и может привести к нарушению работы службы путем одновременного вытеснения всех pod. Прежде чем использовать этот параметр, сначала попробуйте исправить неправильно настроенные PDB (проверьте настройки minAvailable/maxUnavailable в PDB, обеспечьте достаточное количество реплик pod, убедитесь, что PDB не блокируют все вытеснения).
Используйте принудительный буст только в том случае, если PDB-файлы мешают критическим обновлениям и не могут быть разрешены. Это переопределит защиту PDB и потенциально приведет к полной недоступности службы во время обновления.
Требования: Azure CLI 2.79.0 или API AKS версии 2025-09-01+
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
Замечание
- Параметр
upgrade-override-untilопределяет, когда завершается обход проверки (должен быть будущим датой и временем) - Если не указано иное, окно по умолчанию устанавливается на 3 дня от текущего момента.
- Значение "Z" указывает часовой пояс UTC/GMT
Предупреждение
Если принудительное обновление включено, оно имеет приоритет над всеми другими конфигурациями очистки. Параметры поведения недренируемых узлов (вариант 2) не будут применяться, когда активно принудительное обновление.
Вариант 2: Обработка неосушаемых узлов (с учетом PDB)
Используйте этот консервативный подход, чтобы уважать PDB при предотвращении сбоев обновления.
Настройте поведение узлов, неуправляемое:
az aks nodepool update \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--name <node-pool-name> \
--undrainable-node-behavior Cordon \
--max-blocked-nodes 2 \
--drain-timeout 30
Параметры поведения:
- Расписание (по умолчанию): Удаляет заблокированный узел и выполняет замену при всплесках
-
Cordon (рекомендуется): Узел Cordons помечает его как
kubernetes.azure.com/upgrade-status=Quarantined
Максимальное число заблокированных узлов (предварительная версия):
- Указывает, сколько узлов, которые не могут быть очищены, допускается
- Требуется задать
undrainable-node-behavior - Значение по умолчанию — значение
maxSurge(обычно 10%), если не указано
Предварительные требования для максимальных заблокированных узлов
Для использования функции максимального числа заблокированных узлов требуется расширение Azure CLI
aks-previewверсии 18.0.0b9 или более поздней.# Install or update the aks-preview extension az extension add --name aks-preview az extension update --name aks-preview
Пример конфигурации с максимальными заблокированными узлами
az aks nodepool update \
--cluster-name jizenMC1 \
--name nodepool1 \
--resource-group jizenTestMaxBlockedNodesRG \
--max-surge 1 \
--undrainable-node-behavior Cordon \
--max-blocked-nodes 2 \
--drain-timeout 5
Рекомендации по предотвращению сбоев в очистке
- Настройте
maxUnavailableв PDB для разрешения по крайней мере одного удаления пода. - Увеличьте репликации подов для соблюдения требований бюджета нарушения
- Увеличьте тайм-аут ожидания завершения, если рабочие нагрузки требуют больше времени. (Значение по умолчанию — 30 минут.)
- Тестирование PDB в стейджинге, мониторинг событий обновления и использование сине-зеленых развертываний для критически важных нагрузок. Дополнительные сведения см. в разделе Сине-зеленое развертывание кластеров AKS.
Проверка неуправляемых узлов
Заблокированные узлы незапланированы для модулей pod и помечены меткой
"kubernetes.azure.com/upgrade-status: Quarantined".Проверьте метку на любых заблокированных узлах при сбое узла слива при обновлении:
kubectl get nodes --show-labels=true
Устранение неподдающихся разгрузке узлов
Удалите ответственный PDB:
kubectl delete pdb <pdb-name>kubernetes.azure.com/upgrade-status: QuarantinedУдалите метку:kubectl label nodes <node-name> <label-name>При необходимости удалите заблокированный узел:
az aks nodepool delete-machines --cluster-name <cluster-name> --machine-names <machine-name> --name <node-pool-name> --resource-group <resource-group-name>После завершения этого шага можно примирить состояние кластера, выполнив любую операцию обновления без необязательных полей, как описано в az aks. Кроме того, можно масштабировать пул узлов до того же количества узлов, что и количество обновленных узлов. Это действие гарантирует, что пул узлов получает свой исходный размер. AKS уделяет приоритетное внимание удалению заблокированных узлов. Эта команда также восстанавливает состояние подготовки кластера на
Succeeded. В следующем примере2— общее количество обновленных узлов.# Update the cluster to restore the provisioning status az aks update --resource-group <resource-group-name> --name <cluster-name> # Scale the node pool to restore the original size az aks nodepool scale --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --node-count 2
Сценарий 3. Медленные обновления
Консервативные параметры или проблемы на уровне узла могут отложить обновления, что влияет на способность оставаться в курсе исправлений и улучшений.
Распространенные причины медленных обновлений:
- Низкие
maxSurgeилиmaxUnavailableзначения (ограничивает параллелизм). - Высокий период ожидания (длительные ожидания между обновлениями узлов).
- Сбои очистки (см. сбои с очисткой узлов).
Рекомендации по предотвращению или разрешению
-
maxSurge=33%ИспользуйтеmaxUnavailable=1для производственной среды. - Используйте
maxSurge=50%иmaxUnavailable=2для разработки и тестирования. - Используйте исправление системы безопасности ОС для быстрого и целевого исправления (избегайте повторного создания полного узла).
- Включите
undrainableNodeBehavior, чтобы избежать блокировщиков обновления.
Сценарий 4. Исчерпание IP-адресов
Для узлов всплеска требуется больше IP-адресов. Если подсеть почти достигла вместимости, подготовка узла может пройти с ошибкой (например, Error: SubnetIsFull). Этот сценарий является распространенным для Azure Container Networking Interface, высокого уровня maxPods, или большого количества узлов.
Рекомендации по предотвращению или разрешению
Убедитесь, что в вашей подсети достаточно IP-адресов для всех узлов, дополнительных узлов и подов. Формула имеет значение
Total IPs = (Number of nodes + maxSurge) * (1 + maxPods).Отмените неиспользуемые IP-адреса или разверните подсеть (например, от /24 до /22).
Уменьшите
maxSurge, если расширение подсети невозможно.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --max-surge 10%Мониторинг использования IP-адресов с помощью Azure Monitor или пользовательских оповещений.
Уменьшите размер каждого узла, очистите
maxPodsпотерянные IP-адреса подсистемы балансировки нагрузки и запланируйте размер подсети для высокомасштабируемых кластеров.
Часто задаваемые вопросы
Можно ли использовать средства с открытым кодом для проверки?
Да. Многие средства с открытым кодом интегрируются хорошо с процессами обновления AKS:
- kube-no-trouble (kubent): сканирует устаревшие API до обновления.
- Trivy: сканирование безопасности для образов контейнеров и конфигураций Kubernetes.
- Sonobuoy: проверка соответствия Kubernetes и проверка кластера.
- kube-bench: проверки безопасности на соответствие стандартам Центра интернет-безопасности.
- Polaris: проверка лучших практик Kubernetes.
- kubectl-neat: приведение в порядок манифестов Kubernetes для проверки.
Как проверить совместимость API перед обновлением?
Выполните проверку устаревших функций с помощью таких инструментов, как kubent.
# Install and run API deprecation scanner
kubectl apply -f https://github.com/doitintl/kube-no-trouble/releases/latest/download/knt-full.yaml
# Check for deprecated APIs in your cluster
kubectl run knt --image=doitintl/knt:latest --rm -it --restart=Never -- \
-c /kubeconfig -o json > api-deprecation-report.json
# Review findings
cat api-deprecation-report.json | jq '.[] | select(.deprecated==true)'
Что отличает обновления AKS от других платформ Kubernetes?
AKS предоставляет несколько уникальных преимуществ:
- Встроенная интеграция Azure с Диспетчером трафика Azure, Azure Load Balancer и сетью.
- Диспетчер флота Azure Kubernetes для координации многокластерных обновлений.
- Автоматическое исправление образа узла без ручного управления узлами.
- Встроенная проверка квот, сетей и учетных данных.
- Поддержка Azure для проблем, связанных с обновлением.
Выбор пути обновления
Эта статья предоставила вам технический фундамент. Теперь выберите путь на основе сценария.
Готовы к выполнению?
| Если у вас есть... | Затем перейдите... |
|---|---|
| Рабочая среда | Стратегии обновления производственной среды: проверенные на практике шаблоны для безостановочных обновлений |
| Базы данных или состояние-сохраняющие приложения | Шаблоны рабочих нагрузок с отслеживанием состояния: безопасные шаблоны обновления для сохраняемости данных |
| Несколько сред | Центр сценариев обновления: дерево принятия решений для сложных настроек |
| Базовый кластер | Обновление кластера AKS: пошаговое обновление кластера |
Все еще думаете?
Используйте центр сценариев обновления для структурированного дерева принятия решений, которое учитывает ваши:
- Допустимое время простоя
- Сложность среды
- Профиль риска
- Ограничения временной шкалы
Дальнейшие задачи
- Ознакомьтесь с руководством по исправлению и обновлению AKS, чтобы получить лучшие практики и советы по планированию перед началом обновления.
- Всегда проверяйте критические изменения API и проверяйте совместимость рабочей нагрузки с целевой версией Kubernetes.
- Проверьте параметры обновления (например
maxSurge,maxUnavailableи PDB) в промежуточной среде, чтобы свести к минимуму рабочий риск. - Отслеживайте события обновления и работоспособности кластера на протяжении всего процесса.