Техническое обслуживание узлов кластера без потери ресурсов
При техническом обслуживании и обновлении может потребоваться перезапустить или пересоздать узлы кластера Managed Service for Kubernetes. При этом ресурсы узлов возвращаются в общий доступ и могут быть заняты другими пользователями.
Резервирование особенно актуально для ресурсов с ограниченной доступностью, например GPU. Если при перезапуске узла с GPU GPU-конфигурация окажется занята, запуск завершится ошибкой.
Сохранить ресурсы при обслуживании можно двумя способами:
- С использованием пула резервов ВМ — подходит для любых сценариев перезапуска или пересоздания узлов.
- С заданием на техническое обслуживание — подходит, если в сервисе Compute Cloud есть задание на техническое обслуживание узла.
С использованием пула резервов ВМ
Важно
Пулы резервов ВМ тарифицируются: взимается плата за весь свободный объем зарезервированных вычислительных ресурсов ВМ, кластеров GPU и программно ускоренных сетей согласно правилам тарификации Yandex Compute Cloud. Подробнее в разделе Использование пулов резервов ВМ.
Функциональность пулов резервов ВМ находится на стадии Preview.
Ресурсы узла можно зарезервировать с помощью пула резервов ВМ. Тогда при перезапуске или пересоздании узла ресурсы сохранятся в пуле, а не перейдут в общий доступ — узел запустится заново именно на них.
-
Создайте пул резервов ВМ с размером
0и конфигурацией существующих узлов. Например, с нужными параметрами GPU. -
Расширьте пул до нужного количества узлов, включив опцию ожидания ресурсов
--allow-pending-slots. Параметр позволяет добавить слоты, даже если в зоне доступности временно недостаточно свободных ресурсов.Слоты, на которые в момент расширения не хватило ресурсов, перейдут в статус ожидания
pending. -
Привяжите узлы существующего кластера Managed Service for Kubernetes к созданному пулу.
Узлы кластера Managed Service for Kubernetes займут свободные слоты в пуле. Далее узлы будут запущены или созданы заново на зарезервированных ресурсах пула.
С заданием на техническое обслуживание
Важно
Этот способ обслуживания без потери ресурсов подходит только для случаев, когда задание на техническое обслуживание поставлено Compute Cloud.
Если вы хотите самостоятельно перезапустить или пересоздать узел без потери ресурсов, используйте пул резервов ВМ.
Compute Cloud периодически выполняет техническое обслуживание оборудования, необходимого для работы виртуальных машин. В некоторых случаях техническое обслуживание требует перезапуска ВМ с GPU.
Для выполнения задания на техническое обслуживание ресурсы ВМ с GPU резервируются автоматически и не возвращаются в общий доступ при перезапуске — для обслуживания достаточно снять нагрузку с узла и выполнить перезапуск через Compute Cloud.
-
Чтобы определить, какой узел требует обслуживания, посмотрите задания на техническое обслуживание.
-
Убедитесь, что
kubectlподключен к нужному кластеру, и получите список узлов:kubectl config current-context kubectl get nodesИмя узла в выводе команды соответствует имени ВМ в Compute Cloud.
-
Расселите поды с узла командой
kubectl drain.kubectl drain <имя_узла> \ --ignore-daemonsets \ --delete-emptydir-dataГде
<имя_узла>— имя узла Kubernetes.После выполнения команды узел перейдет в статус
SchedulingDisabled— на нем не будут создаваться новые поды, а текущие рабочие поды будут расселены на другие узлы кластера.Подробнее о расселении подов — в Расселение подов с узла.
-
Выполните задание на техническое обслуживание немедленно. ВМ перезапустится, при этом Compute Cloud сохранит GPU-ресурсы за ней.
-
Разрешите размещение подов на узле в консоли управления или командой:
kubectl uncordon <имя_узла>Узел снова станет доступен для планирования новых подов.