Подготовка шаблона провайдера

Требования к шаблонам и пошаговый процесс подготовки.

Шаблоны виртуальных машин для всех провайдеров (VMware vSphere, oVirt, OpenStack, Basis Dynamix, vCloud Director, Yandex Cloud) готовятся одним способом. Процесс не зависит от типа провайдера: создаёте ВМ, подготавливаете её утилитой stc, преобразуете в шаблон и загружаете в экземпляр провайдера.

При создании ВМ из шаблона платформа «Штурвал» самостоятельно устанавливает Kubernetes выбранной версии и необходимые конфигурации.

Как это связано с развёртыванием кластера целиком (Cluster API, шаги до регистрации узлов), см. Создание узлов при развертывании клиентского кластера.


Что содержит шаблон

Шаблон хранит:

  • Операционную систему и её версию — из списка поддерживаемых ОС;
  • Ограничение по размеру диска — созданные ВМ не могут быть меньше объёма диска исходной ВМ.

Шаблон не хранит информацию о ресурсах (CPU, RAM) исходной ВМ.


Требования к ВМ перед созданием шаблона

На виртуальной машине, с которой формируется шаблон:

Требование Описание
Синхронизация времени NTP на всех узлах. Расхождение времени может привести к сбоям
Резолв зеркала Хост с зеркалом (registry) должен резолвиться по действующему FQDN
SELinux Отключен (disabled) или в режиме permissive
Репозитории Недоступные репозитории отключены или удалены (родные репозитории дистрибутива)
Пакеты Установлены iptables и gnupg
Ресурсы ВМ Не менее 4 vCPU и 8 ГБ RAM. Если stc завершает подготовку шаблона ошибкой проверки узла из-за нехватки ресурсов, добавьте ресурсы ВМ и запустите команду повторно

При использовании зеркала имя registry указывайте так же, как при развёртывании платформы.

Провайдер Описание
VK Cloud При создании образов (images) установите тип доступа публичный public, образы приватные — private не будут доступны для выбора шаблона ВМ в экземпляре провайдера. Как изменить тип доступа созданного образа см. на странице.
oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization В шаблоне ВМ должен быть диск с включённым флагом Bootable. Проверьте и включите флаг в свойствах диска, чтобы ВМ могла использовать этот диск для запуска операционной системы.

Распределение диска

Рекомендуется: использовать LVM и хранить данные в корневом разделе. При увеличении диска ВМ корневой раздел будет расширяться. Минимальный объём диска — 60 ГБ.

Обратите внимание! Для корректного расширения диска соблюдайте требования к выбранной схеме разметки. Когда используется LVM PV, входящий в группу томов, должен быть активным и последним разделом в таблице разделов.

Верхнеуровнево использование разделов помимо корневого в минимальной конфигурации следующее:

Раздел Директории Назначение Объём
/var/ /var/csi/rawfile/ Локальное хранилище, пользовательские PV 5 ГБ + PV
/var/log Логи 20 ГБ
/var/lib/kubelet/ Kubelet (emptydir) 10 ГБ
/var/lib/containerd/ Образы контейнеров 10 ГБ
/home — Домашние каталоги 500 МБ
/boot — Загрузочный раздел 1 ГБ
/ — Корневой раздел 20 ГБ

При необходимости вынести /var/log — выделите 20 ГБ.

Если LVM не используется

Корневой раздел / должен быть активным и последним разделом в таблице разделов. Если другие разделы расположены за корневым разделом, увеличение диска работать не будет.


Пошаговый процесс создания шаблона

Шаг 1: Создание ВМ в платформе виртуализации

Создайте виртуальную машину в oVirt, VMware vSphere, OpenStack или другой среде. Установите поддерживаемую ОС, настройте диск по рекомендациям выше, выполните требования к ВМ.

Шаг 2: Подготовка шаблона утилитой stc

Обратите внимание! stc запускается на рабочей машине (не на хосте кластера) с ОС Linux. При использовании зеркала имя registry указывайте так же, как при развёртывании платформы.

  1. Скачайте stc https://public.shturval.tech/stc-2.14.0 и сделайте его исполняемым:
chmod +x ./stc-2.14.0
  1. Запустите подготовку шаблона на ВМ (укажите дополнительно параметр registry, если используете зеркало вместо r.shturval.tech):
./stc-2.14.0 template --license="ВАША-ЛИЦЕНЗИЯ"

Обратите внимание! Если во время подготовки шаблона сообщается, что требуется перезагрузка узла для включения cgroup v2, дождитесь ее окончания. После чего повторно выполните команду stc template с теми же параметрами. Шаблон будет готовым только после повторного успешного выполнения команды без требования перезапуска команды.

Для платформы версии 2.14.0 и выше (Kubernetes 1.35) cgroup v2 обязателен — шаблоны без cgroup v2 не подходят для новых узлов. После обновления платформы подготовьте и замените шаблоны во всех группах узлов — Узлы и шаблоны ВМ.

Параметры команды stc template:

Параметр Обязательный Описание По умолчанию
--license Да Лицензионный ключ для загрузки пакетов -
--registry Нет Адрес registry (по умолчанию r.shturval.tech). Должен совпадать с registry при инсталляции платформы -
--platform-version Нет Версия платформы «Штурвал». Соответствие версий — в документации -
--keep-cloud-init Нет Оставить cloud-init (обязательно для Yandex Cloud) false
--fix-vmware-network Нет Исправление сети на ВМ для провайдеров VMware vSphere, VMware vCloud Director. Без исправления на vmxnet3 некорректно работает контрольная сумма туннельного трафика, что приводит к проблемам с overlay-сетью Kubernetes. На ВМ для провайдеров не на базе VMware исправление пропускается true
--dhcp-no-domain-name Нет Отключить возможность DHCP принимать параметр domain-name (настраивается в netplan или dhclient). Может быть использован, когда ВМ в корпоративной сети с DHCP, который раздаёт домен организации, а узлы кластера должны резолвиться без суффикса. false

Примеры команд stc

Открытый контур:

./stc-2.14.0 template --license="ВАША-ЛИЦЕНЗИЯ"

Закрытый контур (зеркало):

./stc-2.14.0 template --license="ВАША-ЛИЦЕНЗИЯ" --registry="АДРЕС-ВАШЕГО-REGISTRY"

Yandex Cloud (с cloud-init):

./stc-2.14.0 template --license="ВАША-ЛИЦЕНЗИЯ" --keep-cloud-init

oVirt (с dhcp-no-domain-name):

./stc-2.14.0 template --license="ВАША-ЛИЦЕНЗИЯ" --dhcp-no-domain-name

  1. Завершите работу ВМ в платформе виртуализации. После перехода в состояние «выключена» преобразуйте ВМ в шаблон средствами провайдера.

Шаг 3: Загрузка шаблона в платформу «Штурвал»

Добавьте созданный шаблон в экземпляр провайдера:

  • VMware vSphere
  • oVirt (zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization)
  • OpenStack
  • Basis Dynamix
  • VMware vCloud Director
  • Yandex Cloud

К одному экземпляру провайдера можно добавить несколько шаблонов. Для каждого шаблона указывается одна версия Kubernetes. Версия Kubernetes в шаблоне определяет доступные версии платформы при создании клиентских кластеров. Перед выбором версии Kubernetes ознакомьтесь с соответствием версий Штурвал и Kubernetes.

На странице экземпляра провайдера в блоке Шаблоны виртуальных машин нажмите + для добавления шаблона. В боковом окне выберите имя (как в виртуализации) и версию Kubernetes. Соответсвующие Версии Штурвала заполнятся автоматически и будут доступны только для просмотра.


InfraMachineTemplate

Шаблоны ВМ являются основой для InfraMachineTemplates, из которых создаются узлы в группах. На основе одного шаблона ВМ можно настроить несколько InfraMachineTemplates с разными параметрами (CPU, RAM и т.д.).

Общее описание этапов появления узлов из шаблона при создании клиентского кластера см. также в справке по узлам при развертывании.