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

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

Шаблоны виртуальных машин для всех провайдеров (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 и т.д.).

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