Обновление операционной системы в группе узлов
Начиная с версии Kubernetes 1.30 операционная система узлов изменилась с Ubuntu 20.04 на Ubuntu 22.04. При обновлении групп узлов в этих версиях новые узлы автоматически создаются из образа виртуальной машины с Ubuntu 22.04.
Примечание
Обновление версии ОС доступно в релизном канале RAPID. Позже обновление станет доступно в релизных каналах REGULAR и STABLE.
Изменения пользовательских ресурсов
В Ubuntu 22.04 изменились системные библиотеки и заголовки ядра Linux, поэтому компиляция драйверов GPU может не работать для групп узлов с пользовательскими драйверами GPU.
Как это проявляется:
- Возникают ошибки сборки драйвера.
- Не обнаруживается GPU.
- Обновление группы узлов завершается неуспешно.
Чтобы этого избежать, при подготовке к обновлению обеспечьте совместимость версий GPU Operator и драйверов:
- Обновите GPU Operator до версии
24.9.x+. - Обновите драйвер до версии
550.144.03или выше. - Используйте предварительно скомпилированные драйверы. Для этого при установке GPU Operator задайте настройку
--driver.usePrecompiled=true.
Подробнее об использовании GPU с пользовательской версией драйвера см. в разделе Использование групп узлов c GPU без предустановленных драйверов.
Важно
Так как в Ubuntu 22.04 используется новая версия ядра Linux 5.15, обновление ОС может нарушить работу пользовательских модулей ядра, компилируемых с помощью DKMS
Подготовка к миграции
Перед миграцией кластера Kubernetes на новую версию ОС протестируйте обновление на новом кластере:
-
Создайте кластер Managed Service for Kubernetes и укажите для него релизный канал
RAPID. -
Создайте группу узлов в созданном кластере.
-
Протестируйте работу ваших приложений, у которых могут быть зависимости от версии ОС, в созданном кластере.
Проверьте ключевые показатели нагрузки:
- загрузка GPU;
- мониторинг состояния приложений;
- функционирование агентов мониторинга и драйверов.
Как проверить версию ОС на узлах
Все узлы в группе используют один и тот же базовый образ версии ОС. Проверить версию ОС можно с помощью команд:
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.osImage}{"\n"}{end}'
kubectl get node <node-name> -o jsonpath='{.status.nodeInfo.osImage}{"\n"}'