Подготовка шаблона провайдера
Требования к шаблонам и пошаговый процесс подготовки.
Шаблоны виртуальных машин для всех провайдеров (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 указывайте так же, как при развёртывании платформы.
- Скачайте stc https://public.shturval.tech/stc-2.14.0 и сделайте его исполняемым:
chmod +x ./stc-2.14.0
- Запустите подготовку шаблона на ВМ (укажите дополнительно параметр 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
- Завершите работу ВМ в платформе виртуализации. После перехода в состояние «выключена» преобразуйте ВМ в шаблон средствами провайдера.
Шаг 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 и т.д.).
Общее описание этапов появления узлов из шаблона при создании клиентского кластера см. также в справке по узлам при развертывании.