Deckhouse Kubernetes Platform на VMware vSphere

Перед началом установки убедитесь в наличии квот облачного провайдера, необходимых для развертывания вашего кластера.

На виртуальных машинах должен быть установлен пакет cloud-init. После запуска виртуальной машины должны быть запущены следующие службы, связанные с этим пакетом :

  • cloud-config.service;
  • cloud-final.service;
  • cloud-init.service.

Список необходимых ресурсов 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
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
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
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>
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>
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>
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 \
   $(govc role.ls Admin | grep -F -e 'Folder.' -e 'InventoryService.' -e 'Resource.' -e 'VirtualMachine.')
govc role.create deckhouse \ Cns.Searchable Datastore.AllocateSpace Datastore.Browse Datastore.FileManagement \ Global.GlobalTag Global.SystemTag Network.Assign StorageProfile.View \ $(govc role.ls Admin | grep -F -e 'Folder.' -e 'InventoryService.' -e 'Resource.' -e 'VirtualMachine.')

Назначьте пользователю роль на объекте vCenter:

govc permissions.set -principal <username>@vsphere.local -role deckhouse /
govc permissions.set -principal <username>@vsphere.local -role deckhouse /

Подготовка образа виртуальной машины

Для создания шаблона виртуальной машины (Template) рекомендуется использовать готовый cloud-образ/OVA-файл, предоставляемый вендором ОС:

Если вы планируете использовать дистрибутив отечественной ОС, обратитесь к вендору ОС для получения образа/OVA-файла.

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