Устранение неполадок устаревших версий ядра в образах узлов контейнеров Linux
Во время миграции или при добавлении новых пулов узлов в узел контейнеров Azure Linux могут возникнуть проблемы с устаревшими версиями ядра. Служба Azure Kubernetes (AKS) выпускает новый образ узла Azure Linux каждую неделю, который используется для новых пулов узлов и в качестве начального образа для масштабирования. Однако старые пулы узлов могут не обновлять их версии ядра, как ожидалось.
Чтобы проверить версию ЯДРА пулов узлов, выполните следующие действия:
kubectl get nodes -o wide
Затем сравните версию ядра пулов узлов с последним ядром, опубликованным на packages.microsoft.com.
Симптом
Распространенный симптом этой проблемы включает в себя:
- Узлы Linux Azure не используют последнюю версию ядра.
Причины
Существует две основные причины этой проблемы:
- Автоматическое обновление образа узла не было включено при создании пула узлов.
- Базовый образ, который AKS использует для запуска кластеров, выполняется две недели после последних версий ядра из-за процедуры развертывания.
Решение
Вы можете включить автоматическое обновление с помощью GitHub Actions и перезагрузить узлы для устранения этой проблемы.
Включение автоматического обновления образа узла с помощью Azure CLI
Чтобы включить автоматическое обновление образа узла при развертывании кластера из az-cli, добавьте параметр --auto-upgrade-channel node-image
.
az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux --auto-upgrade-channel node-image
Включение автоматического обновления образа узла с помощью шаблонов ARM
Чтобы включить автоматическое обновление образа узла при использовании шаблона ARM, можно задать для свойства upgradeChannel значение autoUpgradeProfile
node-image
.
autoUpgradeProfile: {
upgradeChannel: 'node-image'
}
Перезагрузка узлов
При обновлении версии ядра необходимо перезагрузить узел, чтобы использовать новую версию ядра. Рекомендуется настроить курируемую управляющую программу. Курировался для мониторинга узлов для /var/run/reboot-required
файла, очистки рабочей нагрузки и перезагрузки узлов.
Обходное решение. Обновление вручную
Если вам нужен быстрый обходной путь, вы можете вручную обновить образ узла в кластере с помощью az aks nodepool upgrade. Это можно сделать, выполнив команду
az aks nodepool upgrade \
--resource-group testAzureLinuxResourceGroup \
--cluster-name testAzureLinuxCluster \
--name myAzureLinuxNodepool \
--node-image-only
Следующие шаги
Если описанные выше шаги не устранят проблему, отправьте запрос в службу поддержки.