Deckhouse Kubernetes Platform на VMware vSphere
Установка Deckhouse Kubernetes Platform на VMware vSphere в Community Edition недоступна. Ознакомиться с условиями и ценами на коммерческие редакции.
Перед началом установки убедитесь в наличии квот облачного провайдера, необходимых для развертывания вашего кластера.
Чтобы использовать ContainerdV2 в качестве container runtime на узлах кластера, ОС на виртуальных машинах должны соответствовать следующим требованиям:
- ядро Linux версии 5.8 и новее;
- поддержка
CgroupsV2; - systemd версии
244и новее; - поддержка модуля ядра
erofs.
Подробнее — в документации.
Deckhouse Kubernetes Platform, начиная с версии 1.74, имеет механизм контроля целостности модулей, который защищает их от подмены и изменения. Этот механизм включается автоматически при поддержке операционной системой на узлах, где установлен Deckhouse, модуля ядра erofs. При отсутствии этого модуля ядра Deckhouse продолжит работу без механизма контроля целостности модулей, при этом появится алерт о неработоспособности этой функциональности.
На виртуальных машинах должен быть установлен пакет cloud-init.
После запуска виртуальной машины должны быть запущены следующие службы, связанные с этим пакетом :
cloud-config.service;cloud-final.service;cloud-init.service.
Провайдер поддерживает работу только с одним диском в шаблоне виртуальной машины. Убедитесь, что шаблон содержит только один диск.
Для установки Deckhouse Kubernetes Platform на VMware vSphere требуется версия vSphere 7.x или 8.x с поддержкой механизма Online volume expansion.
Список необходимых ресурсов vSphere
Deckhouse использует интерфейс ens192, как интерфейс по умолчанию для виртуальных машин в vSphere. Поэтому, при использовании статических IP-адресов в mainNetwork, вы должны в образе ОС создать интерфейс с именем ens192, как интерфейс по умолчанию.
- User с необходимым набором прав.
- Network с DHCP и доступом в интернет.
- Datacenter с соответствующим тегом
k8s-region. - Cluster с соответствующим тегом
k8s-zone. - Datastore в любом количестве, с соответствующими тегами.
- Template — подготовленный образ виртуальной машины.
Конфигурация vSphere
Установка govc
Для дальнейшей конфигурации vSphere вам понадобится vSphere CLI — govc.
После установки задайте переменные окружения для работы с vCenter:
export GOVC_URL=example.com
export GOVC_USERNAME=<username>@vsphere.local
export GOVC_PASSWORD=<password>
export GOVC_INSECURE=1
Создание тегов и категорий тегов
В VMware vSphere нет понятий «регион» и «зона». «Регионом» в vSphere является Datacenter, а «зоной» — Cluster. Для создания этой связи используются теги.
Создайте категории тегов с помощью команд:
govc tags.category.create -d "Kubernetes Region" k8s-region
govc tags.category.create -d "Kubernetes Zone" k8s-zone
Создайте теги в каждой категории. Если вы планируете использовать несколько «зон» (Cluster), создайте тег для каждой из них:
govc tags.create -d "Kubernetes Region" -c k8s-region test-region
govc tags.create -d "Kubernetes Zone Test 1" -c k8s-zone test-zone-1
govc tags.create -d "Kubernetes Zone Test 2" -c k8s-zone test-zone-2
Назначьте тег «региона» на Datacenter:
govc tags.attach -c k8s-region test-region /<DatacenterName>
Назначьте теги «зон» на объекты Cluster:
govc tags.attach -c k8s-zone test-zone-1 /<DatacenterName>/host/<ClusterName1>
govc tags.attach -c k8s-zone test-zone-2 /<DatacenterName>/host/<ClusterName2>
Конфигурация Datastore
Для динамического заказа PersistentVolume необходимо, чтобы Datastore был доступен на каждом хосте ESXi (shared datastore).
Для автоматического создания StorageClass в кластере Kubernetes назначьте созданные ранее теги «региона» и «зоны» на объекты Datastore:
govc tags.attach -c k8s-region test-region /<DatacenterName>/datastore/<DatastoreName1>
govc tags.attach -c k8s-zone test-zone-1 /<DatacenterName>/datastore/<DatastoreName1>
govc tags.attach -c k8s-region test-region /<DatacenterName>/datastore/<DatastoreName2>
govc tags.attach -c k8s-zone test-zone-2 /<DatacenterName>/datastore/<DatastoreName2>
Создание и назначение роли
Ввиду разнообразия подключаемых к vSphere SSO-провайдеров шаги по созданию пользователя в данной статье не рассматриваются.
Роль, которую предлагается создать далее, включает в себя все возможные права для всех компонентов Deckhouse. Для получения детального списка привилегий, обратитесь к документации. При необходимости получения более гранулярных прав обратитесь в техподдержку Deckhouse.
Создайте роль с необходимыми правами:
govc role.create deckhouse \
Cns.Searchable Datastore.AllocateSpace Datastore.Browse Datastore.FileManagement \
Global.GlobalTag Global.SystemTag Network.Assign StorageProfile.View \
VcIdentityProviders.Read \
Infraprofile.Read\
$(govc role.ls Admin | grep -F -e 'Folder.' -e 'InventoryService.' -e 'Resource.' -e 'VirtualMachine.' -e 'Host.Cim.' -e 'Host.Config.' -e 'Profile.' -e 'VApp.')
Назначьте пользователю роль на объекте vCenter:
govc permissions.set -principal <username>@vsphere.local -role deckhouse /
Подготовка образа виртуальной машины
Для создания шаблона виртуальной машины (Template) рекомендуется использовать готовый cloud-образ/OVA-файл, предоставляемый вендором ОС:
- Ubuntu
- Debian
- CentOS
- Rocky Linux (секция Generic Cloud / OpenStack)
Если вы планируете использовать дистрибутив отечественной ОС, обратитесь к вендору ОС для получения образа/OVA-файла.
Если вам необходимо использовать собственный образ, обратитесь к документации.