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

Установка подчиненного кластера

Внимание

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

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

Заметка

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

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

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

Наименования кластеров

Имя подчиненного кластера: test-cluster

Namespace: test-cluster

Сумма символов: 24

Имя подчиненного кластера: very-very-long-name-cluster

Namespace: test-cluster

Сумма символов: 39

Имя подчиненного кластера: test-cluster

Namespace: very-very-long-namespace

Сумма символов: 36

Установка

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

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

Разворачивание с помощью установщика

Заметка

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

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

Main Page Create Button Main Page Create Button

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

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

  1. SUBCLUSTER_NAME

Cluster Name Cluster Name

Kubernetes Options

Kubernetes Options Kubernetes Options

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

Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.

Допустимый размер блока /[1-20]

Пример:

podsCidrBlocks: ["172.20.0.0/16"]

SUBCLUSTER_SERVICE_CIDR Блок адресов для Service.

Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.

Допустимый размер блока /[1-20]

Пример:

servicesCidrBlocks: ["172.21.0.0/16"]

Provider Configuration

Заметка

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

Заметка

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

Заметка

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

Provider Configuration Provider Configuration

Provider Configuration Provider Configuration

Имя параметра Описание
VSPHERE_ADDRESS IP адрес или доменное имя вашего vCenter
VSPHERE_SECRET_NAMESPACE Namespace, в котором размещен secret авторизации vSphere
VSPHERE_SECRET_NAME Имя secret авторизации vSphere
VSPHERE_USERNAME Пользователь для подключения к vCenter
VSPHERE_PASSWORD Пароль для подключения к vCenter

Provider Configuration Provider Configuration

Имя параметра Описание
SSH_KEY_# Список ssh-ключей, которые будут добавлены на узлы

Private Registry

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

Private Registry Off Private Registry Off

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

Private Registry Private Registry

Заметка

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

Заметка

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

Имя параметра Описание
PRIVATE_REGISTRY_URL URL вашего репозитория образов.

Если установка будет производится online блок registry можно удалить

PRIVATE_REGISTRY_SECRET_NAMESPACE Namespace, в котором размещен secret для авторизации в приватный репозиторий образов
PRIVATE_REGISTRY_SECRET_NAME Имя secret для авторизации в приватный репозиторий образов
PRIVATE_REGISTRY_USERNAME Имя пользователя в репозитории образов.

Если установка будет производится online блок registry можно удалить

PRIVATE_REGISTRY_PASSWORD Пароль для пользователя в репозитории образов.

Если установка будет производится online блок registry можно удалить

PRIVATE_REGISTRY_SECRET_HOST_KEY При использовании существующего secret. Имя ключа, содержащее параметр HOST
PRIVATE_REGISTRY_SECRET_USERNAME_KEY При использовании существующего secret. Имя ключа, содержащее параметр USERNAME
PRIVATE_REGISTRY_SECRET_PASSWORD_KEY При использовании существующего secret. Имя ключа, содержащее параметр PASSWORD

Control Plane

Control Plane Control Plane

Заметка

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

Имя параметра Описание
KCP_REPLICAS Количество узлов с ролью master.

Может принимать значения 3 или 5

K8SCPIP IP-адрес балансировщика kube-apiserver для обеспечения отказоустойчивости.

Адрес должен быть свободен и не состоять в dhcp-пулах Подробнее

KUBE_API_PORT Порт kube-api. По-умолчанию 6443
MHC_MAX_UNHEALTY Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.

Для узлов с ролью master, значение по-умолчанию 100%.

Для узлов с ролью worker, значение по-умолчанию 40%

Подробнее

MHC_TIMEOUT Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.

По-умолчанию 10m

Подробнее

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

KCP Template KCP Template

Имя параметра Описание
VSPHERE_NETWORK Имя сети, в которую будут подключены новые виртуальные машины
VSPHERE_FOLDER Имя директории, в которых будут размещены новые виртуальные машины
VSPHERE_DATACENTER Имя датацентра
VSPHERE_DATASTORE Имя хранилища, в котором будут размещены новые виртуальные машины
VSPHERE_CLUSTER Имя кластера
VSPHERE_CONTROLPLANE_TEMPLATE Имя шаблона виртуальной машины, из которого будут созданы новые узлы с ролью master
VSPHERE_CONTROLPLANE_CPU Число CPU.

Требования к инфраструктуре

VSPHERE_CONTROLPLANE_MEMORY_MB Объём оперативной памяти. Измеряется в MB.

Требования к инфраструктуре

VSPHERE_CONTROLPLANE_DISK_GB Объём дискового пространства. Измеряется в GB.

Требования к инфраструктуре

WorkerPool

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

Заметка

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

Add Worker Pool Add Worker Pool

KCP Template KCP Template

Имя параметра Описание
SUBCLUSTER_WORKERPOOL_NAME Имя пула виртуальных машин
WORKER_REPLICAS Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
Roles Для большинства инсталляций используйте роль bootsman-worker.

Подробнее о ролях

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

Для узлов с ролью master, значение по-умолчанию 100%.

Для узлов с ролью worker, значение по-умолчанию 40%

Подробнее

MHC_TIMEOUT Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.

По-умолчанию 10m

Подробнее

Заметка

Для добавления узлов с GPU добавьте роль bootsman-gpu

WORKER Template WORKER Template

Имя параметра Описание
VSPHERE_NETWORK Имя сети, в которую будут подключены новые виртуальные машины
VSPHERE_FOLDER Имя директории, в которых будут размещены новые виртуальные машины
VSPHERE_DATACENTER Имя датацентра
VSPHERE_DATASTORE Имя хранилища, в котором будут размещены новые виртуальные машины
VSPHERE_CLUSTER Имя кластера
VSPHERE_WORKER_TEMPLATE Имя шаблона виртуальной машины, из которого будут созданы новые узлы с ролью worker
VSPHERE_WORKER_CPU Число CPU.

Требования к инфраструктуре

VSPHERE_WORKER_MEMORY_MB Объём оперативной памяти. Измеряется в MB.

Требования к инфраструктуре

VSPHERE_WORKER_DISK_GB Объём дискового пространства. Измеряется в GB.

Требования к инфраструктуре

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

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

Заметка

Манифест secret_private_registry.yaml требуется только для установки из вашего приватного репозитория, в случае установки из репозитория Bootsman - пропустите.

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

apiVersion: v1
kind: Secret
metadata:
  name: PRIVATE_REGISTRY_SECRET_NAME (1)
  namespace: PRIVATE_REGISTRY_SECRET_NAMESPACE (2)
stringData:
  host: PRIVATE_REGISTRY_HOST (3)
  username: PRIVATE_REGISTRY_USERNAME (4)
  password: PRIVATE_REGISTRY_PASSWORD (5)

  1. Имя secret для авторизации в приватный репозиторий образов
  2. Namespace, в котором размещен secret для авторизации в приватный репозиторий образов
  3. Доменное имя вашего репозитория образов
  4. Имя пользователя в репозитории образов.

    Если установка будет производится online блок registry можно удалить

  5. Пароль для пользователя в репозитории образов.

    Если установка будет производится online блок registry можно удалить

apiVersion: provisioning.bootsman.tech/v1alpha1
kind: Cluster
metadata:
  name: SUBCLUSTER_NAME (1)
  namespace: SUBCLUSTER_NAMESPACE (2)
spec:
  bootsmanVersion: latest
  clusterType: capi
  capiConfig:
    controlPlane:
      replicas: KCP_REPLICAS (3)
      endpoint:
        host: K8SCPIP (4)
        port: KUBE_API_PORT (5)
    infrastructure:
      provider: vsphere
      sshAuthorizedKeys: (6)
            - >-
              ssh-ed25519 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
      vsphereProviderConfig:
        secret:
          user: VSPHERE_USERNAME (7)
          password: VSPHERE_PASSWORD (8)
        template:
          datacenter: VSPHERE_DATACENTER (9)
          cluster: VSPHERE_CLUSTER (10)
          datastore: VSPHERE_DATASTORE (11)
          folder: VSPHERE_FOLDER (12)
          insecureFlag: VSPHERE_INSECURE (13)
          networkName: VSPHERE_NETWORK (14)
          resource:
            diskGiB: VSPHERE_CONTROLPLANE_DISK_GB (15)
            memoryMiB: VSPHERE_CONTROLPLANE_MEMORY_MB (16)
            numCPUs: VSPHERE_CONTROLPLANE_CPU (17)
          serverAddress: VSPHERE_ADDRESS (18)
          template: VSPHERE_CONTROLPLANE_TEMPLATE (19)
    kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (20)
    network:
      podsCidrBlocks:
        - SUBCLUSTER_POD_CIDR (21)
      servicesCidrBlocks:
        - SUBCLUSTER_SERVICE_CIDR (22)
    # Раскомментируйте блок для установки из вашего регистри
    # registry:
    #   credentialsSecret:
    #     hostKey: host
    #     name: PRIVATE_REGISTRY_SECRET_NAME (24)
    #     namespace: PRIVATE_REGISTRY_SECRET_NAMESPACE (25)
    #     passwordKey: password
    #     usernameKey: username
    #   url: "PRIVATE_REGISTRY_URL (23)
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''

  1. Имя подчиненного кластера.

    Должен быть уникальным в пределах namespace.

  2. Namespace управляющего кластера, который будет содержать объекты подчинённого кластера
  3. Количество узлов с ролью master.

    Может принимать значения 3 или 5

  4. IP-адрес балансировщика kube-apiserver для обеспечения отказоустойчивости.

    Адрес должен быть свободен и не состоять в dhcp-пулах Подробнее

  5. Порт kube-api. По-умолчанию 6443
  6. Список ssh-ключей, которые будут добавлены на узлы
  7. Пользователь для подключения к vCenter
  8. Пароль для подключения к vCenter
  9. Имя датацентра
  10. Имя кластера
  11. Имя хранилища, в котором будут размещены новые виртуальные машины
  12. Имя директории, в которых будут размещены новые виртуальные машины
  13. Разрешить доступ при отсутствии валидного сертификата на vSphere
  14. Имя сети, в которую будут подключены новые виртуальные машины
  15. Объём дискового пространства. Измеряется в GB.

    Требования к инфраструктуре

  16. Объём оперативной памяти. Измеряется в MB.

    Требования к инфраструктуре

  17. Число CPU.

    Требования к инфраструктуре

  18. IP адрес или доменное имя вашего vCenter
  19. Имя шаблона виртуальной машины, из которого будут созданы новые узлы с ролью master
  20. Версия Kubernetes. Поддерживаемые версии
  21. Блок адресов для Pods.

    Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.

    Допустимый размер блока /[1-20]

    Пример:

    podsCidrBlocks: ["172.20.0.0/16"]

  22. Блок адресов для Service.

    Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.

    Допустимый размер блока /[1-20]

    Пример:

    servicesCidrBlocks: ["172.21.0.0/16"]

  23. URL вашего репозитория образов.

    Если установка будет производится online блок registry можно удалить

  24. Имя secret для авторизации в приватный репозиторий образов
  25. Namespace, в котором размещен secret для авторизации в приватный репозиторий образов

apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
  name: SUBCLUSTER_WORKERPOOL_NAME (1)
  namespace: SUBCLUSTER_NAMESPACE (2)
spec:
  clusterName: SUBCLUSTER_NAME (3)
  kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (4)
  replicas: WORKER_REPLICAS (5)
  infrastructure:
    provider: vsphere
    vsphereConfig:
      insecureFlag: VSPHERE_INSECURE (6)
      resource:
        diskGiB: VSPHERE_WORKER_DISK_GB (7)
        memoryMiB: VSPHERE_WORKER_MEMORY_MB (8)
        numCPUs: VSPHERE_WORKER_CPU (9)
      datacenter: VSPHERE_DATACENTER (10)
      cluster: VSPHERE_CLUSTER (11)
      datastore: VSPHERE_DATASTORE (12)
      folder: VSPHERE_FOLDER (13)
      networkName: VSPHERE_NETWORK (14)
      serverAddress: VSPHERE_ADDRESS (15)
      template: VSPHERE_WORKER_TEMPLATE (16)
  kubeletExtraArgs:
    kubeReserved: ''
    systemReserved: ''
    evictionHard: ''
    evictionMinimumReclaim: ''
    evictionMaxPodGracePeriod: ''
    maxPods: ''
  roles:
    - name: bootsman-worker

  1. Имя пула виртуальных машин
  2. Namespace управляющего кластера, который будет содержать объекты подчинённого кластера
  3. Имя подчиненного кластера.

    Должен быть уникальным в пределах namespace.

  4. Версия Kubernetes. Поддерживаемые версии
  5. Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
  6. Разрешить доступ при отсутствии валидного сертификата на vSphere
  7. Объём дискового пространства. Измеряется в GB.

    Требования к инфраструктуре

  8. Объём оперативной памяти. Измеряется в MB.

    Требования к инфраструктуре

  9. Число CPU.

    Требования к инфраструктуре

  10. Имя датацентра
  11. Имя кластера
  12. Имя хранилища, в котором будут размещены новые виртуальные машины
  13. Имя директории, в которых будут размещены новые виртуальные машины
  14. Имя сети, в которую будут подключены новые виртуальные машины
  15. IP адрес или доменное имя вашего vCenter
  16. Имя шаблона виртуальной машины, из которого будут созданы новые узлы с ролью worker

Следующий шаг