Перейти к содержанию

vSphere

Внимание

Требуется vSphere версии 6.7 u3 или выше

Требования к запуску нового подчинённого кластера

Заметка

Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее

Перед началом установки подчинённого кластера следует удовлетворить следующие требования:

  • Успешная установка управляющего кластера Bootsman
  • DNS-имя управляющего кластера должно быть в DNS-сервере и разрешается для будущего подчинённого кластера
  • Доступ подчинённого кластера к управляющему
  • Сумма символов будущего имени кластера и имени Namespace не должно превышать 30 символов
  • В случае наличия в вашем гипервизоре более одного Cluster в целевом Datacenter, требуется создать отдельного пользователя по инструкции

Установка

Установку можно провести двумя способами:

  • Использовать установщик Bootsman
  • Применить yaml-манифесты

Установка с помощью установщика Bootsman

Заметка

Во время заполнения формы вы можете в любой момент переключится в режим yaml

Для создания подчинённого кластера авторизуйтесь в управляющий кластер и нажмите кнопку Кнопка Создания Подчинённого Кластера

Вас перенаправит на страничку установщика для заполнения данных о будущем кластере.

Сначала укажите имя нового подчинённого кластера (1)

  1. Cluster Name

Cluster Name

Kubernetes Options

Kubernetes Options

Имя параметра Описание Комментарий
${SUBCLUSTER_KUBERNETES_VERSION} Версия Kubernetes
${SUBCLUSTER_NAMESPACE} Namespace управляющего кластера, который будет содержать объекты подчинённого кластера
${SUBCLUSTER_POD_CIDR} Подсеть для подов подчинённого кластера Не пересекается с управляющим или другим подчинённым кластером
${SUBCLUSTER_SERVICE_CIDR} Подсеть для сервисов подчинённого кластера Не пересекается с управляющим или другим подчинённым кластером

Provider Configuration

Provider Configuration

Заметка

В случае использования уже существующего секрета на управляющем кластере, следует использовать настройку "Credential settings" "Use existing" Формы помогут найти секрет и указать имена полей, которые соответствуют пользователю и паролю

Заметка

Advanced mode поможет вам задать специфические имена ключей в секрете. По умолчанию, username - пользователь, password - пароль

Имя параметра Описание Комментарий
${VSPHERE_ADDRESS} IP-адрес или DNS-имя vSphere
${VSPHERE_SECRET_NAMESPACE} Имя namespace секрета
${VSPHERE_SECRET_NAME} Имя секрета с авторизацией в vSphere
${VSPHERE_USERNAME} Пользователь vSphere
${VSPHERE_PASSWORD} Пароль пользователя vSphere
${SSH_KEY_#} Публичный ключ, который будет добавлен на узлы подчиненного кластера

Private Registry

В случае, если вы хотите использовать наш репозиторий образов, то переключите параметр "Use private registry" в выключенное состояние и продолжайте заполнять в соответствии с следующим разделом.

Private Registry Off

Если хотите произвести установку из локального репозитория, то заполните поля из формы ниже

Private Registry

Заметка

В случае использования уже существующего секрета на управляющем кластере, следует использовать настройку "Credential settings" "Use existing" Формы помогут найти секрет и указать имена полей, которые соответствуют пользователю и паролю

Заметка

Advanced mode поможет вам задать специфические имена ключей в секрете. По умолчанию, username - пользователь, password - пароль

Имя параметра Описание Комментарий
${PRIVATE_REGISTRY_URL} URL вашего репозитория образов
${PRIVATE_REGISTRY_SECRET_NAMESPACE} Namespace секрета
${PRIVATE_REGISTRY_SECRET_NAME} Имя секрета
${PRIVATE_REGISTRY_USERNAME} Имя пользователя в репозитории образов
${PRIVATE_REGISTRY_PASSWORD} Пароль для пользователя в репозитории образов

Control Plane

Control Plane

Заметка

Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее

Имя параметра Описание Комментарий
${KCP_REPLICAS} Число реплик мастер-нод
${KCP_IP} Статический IP адрес для мастер-нод
${KUBE_API_PORT} Порт для kube-api По-умолчанию 6443
Шаблон виртуальных машин

KCP Template

Имя параметра Описание Комментарий
${VSPHERE_KCP_TEMPLATE} Имя образа ВМ в vSphere
${VSPHERE_NETWORK} Имя сети vSphere Должна быть создана до запуска
${VSPHERE_FOLDER} Имя директории в vSphere Должна быть создана до запуска
${VSPHERE_DATACENTER} Имя датацентра
${VSPHERE_DATASTORE} Имя дискового хранилища
${VSPHERE_CLUSTER_NAME} Имя кластера
${VSPHERE_KCP_CPU} Число vCPU, выделенных для каждой мастер-ноды
${VSPHERE_KCP_MEMORY} Объём оперативной памяти для каждой мастер-ноды Измеряется в MiB
${VSPHERE_KCP_DISK} Объём дискового пространства для каждой мастер-ноды Измеряется в GiB

WorkerPool

Шаблон виртуальных машин

Заметка

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

Add Worker Pool

Заметка

для установки GPU operator включите параметр GPU Подробнее

WORKER Template

WORKER Template

Имя параметра Описание Комментарий
${SUBCLUSTER_WORKERPOOL_NAME} Имя пул виртуальных машин
${WORKER_REPLICAS} Число виртуальных машин
${VSPHERE_WORKER_TEMPLATE} Имя образа ВМ в vSphere
${VSPHERE_NETWORK} Имя сети vSphere Должна быть создана до запуска
${VSPHERE_FOLDER} Имя директории в vSphere Должна быть создана до запуска
${VSPHERE_DATACENTER} Имя датацентра
${VSPHERE_DATASTORE} Имя дискового хранилища
${VSPHERE_CLUSTER_NAME} Имя кластера
${VSPHERE_WORKER_CPU} Число vCPU, выделенных для каждой мастер-ноды
${VSPHERE_WORKER_MEMORY} Объём оперативной памяти для каждой мастер-ноды Измеряется в MiB
${VSPHERE_WORKER_DISK} Объём дискового пространства для каждой мастер-ноды Измеряется в GiB

Установка с помощью yaml-манифестов

Если вам удобнее способ применения yaml-манифестов, то ниже есть примеры. Заполните их в соответствии с описанием из главы, представленной ранее.

Для применения yaml-манифестов можно использовать kubectl

kubectl apply -f Cluster.yaml
kubectl apply -f Workerpool.yaml

apiVersion: provisioning.bootsman.tech/v1alpha1
kind: Cluster
metadata:
  name: ${SUBCLUSTER_NAME}
  namespace: ${SUBCLUSTER_NAMESPACE}
spec:
  bootsmanVersion: latest
  clusterType: capi
  capiConfig:
    controlPlane:
      replicas: ${KCP_REPLICAS}
      endpoint:
        host: ${KCP_IP}
        port: ${KUBE_API_PORT}
    infrastructure:
      provider: vsphere
      sshAuthorizedKeys: 
            - >-
              ssh-ed25519 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
      vsphereProviderConfig:
        secret:
          user: ${VSPHERE_USERNAME}
          password: ${VSPHERE_PASSWORD}
        template:
          datacenter: ${VSPHERE_DATACENTER}
          cluster: ${VSPHERE_CLUSTER_NAME}
          datastore: ${VSPHERE_DATASTORE}
          folder: ${VSPHERE_FODLER}
          insecureFlag: ${VSPHERE_INSECURE}
          networkName: ${VSPHERE_NETWORK}
          resource:
            diskGiB: ${VSPHERE_KCP_DISK}
            memoryMiB: ${VSPHERE_KCP_MEMORY}
            numCPUs: ${VSPHERE_KCP_CPU}
          serverAddress: ${VSPHERE_ADDRESS}
          template: ${VSPHERE_KCP_TEMPLATE}
    kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
    network:
      podsCidrBlocks:
        - ${SUBCLUSTER_POD_CIDR}
      servicesCidrBlocks:
        - ${SUBCLUSTER_SERVICE_CIDR}
    registry:
      url: ${REGISTRY_URL}
      credentials:
        username: ${REGISTRY_USERNAME}
        password: ${REGISTRY_PASSWORD}
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
  name: ${SUBCLUSTER_WORKERPOOL_NAME}
  namespace: ${SUBCLUSTER_NAMESPACE}
spec:
  clusterName: ${SUBCLUSTER_NAME}
  kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
  replicas: ${WORKER_REPLICAS}
  infrastructure:
    provider: vsphere
    vsphereConfig:
      insecureFlag: ${VSPHERE_INSECURE}
      resource:
        diskGiB: ${VSPHERE_WORKER_DISK}
        memoryMiB: ${VSPHERE_WORKER_MEMORY}
        numCPUs: ${VSPHERE_WORKER_CPU}
      datacenter: ${VSPHERE_DATACENTER}
      cluster: ${VSPHERE_CLUSTER_NAME}
      datastore: ${VSPHERE_DATASTORE}
      folder: ${VSPHERE_FODLER}
      networkName: ${VSPHERE_NETWORK}
      serverAddress: ${VSPHERE_ADDRESS}
      template: ${VSPHERE_WORKER_TEMPLATE}
  kubeletExtraArgs:
    kubeReserved: ''
    systemReserved: ''
    evictionHard: ''
    evictionMinimumReclaim: ''
    evictionMaxPodGracePeriod: ''
    maxPods: ''