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

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

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

Заметка

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

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

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

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

Имя подчиненного кластера: 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

Provider Configuration Provider Configuration

Имя параметра Описание
VK_PROJECT_ID ID проекта в облаке VK.

Можно узнать в "Настройках проекта" в разделе "Terraform" параметр "Project ID / tenant_id"

VK_REGION_NAME Служебный параметр для работы с API.

Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Region Name

VK_PRIVACY Выбор режима взаимодействия с кластером Поддерживаемые значения Public, PrivateMachines, Private. Подробнее
VK_ENDPOINT URL для API доступа к вашему проекту.

Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Auth URL"

VK_USER_DOMAN_NAME Технический параметр. Всегда будет "users".

Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Auth URL"

VK_USERNAME Имя пользователя для авторизации в VK Cloud
VK_PASSWORD Пароль пользователя для авторизации в VK Cloud
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

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

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

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

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

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

Подробнее

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

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

Подробнее

Настройка Сети

Bootsman позволяет использовать как существующие сети и подсети VK Cloud, так и вновь созданные

KCP Template KCP Template

KCP Template KCP Template

KCP Template KCP Template

KCP Template KCP Template

Имя параметра Описание
VK_EXTERNAL_NETWORK_NAME Технический параметр. Всегда будет "ext-net"
VK_NETWORK_NAME Имя сети VK CLoud. Несовместим с VK_NETWORK_ID
VK_NETWORK_ID ID существующей сети
VK_SUBNETWORK_NAME Имя подсети VK CLoud. Несовместим с VK_SUBNETWORK_ID
VK_SUBNETWORK_ID ID существующей подсети
VK_SUBNETWORK_CIDR Адресное пространство для новой подсети VK CLoud. Несовместим с существующей подсетью
VK_ROUTER_NAME Имя маршрутизатора VK CLoud. Несовместим с VK_ROUTER_ID
VK_ROUTER_ID ID существующего роутера
Шаблон виртуальных машин

CONTROLPLANE Template CONTROLPLANE Template

Имя параметра Описание
VK_CONTROLPLANE_IMAGE_ID ID образа операционной системы.

Подготовьте ОС в соответствии с инструкцией или используйте уже подготовленные образа

VK_CONTROLPLANE_FLAVOR Шаблон конфигурации облака VK.

О Шаблонах конфигурации

VK_CONTROLPLANE_DISK_TYPE Тип дисков.

Подробнее о типах дисков

VK_CONTROLPLANE_DISK_SIZE Объём дискового пространства.

Измеряется в GiB.

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

VK_CONTROLPLANE_ZONE Зона доступности VK Cloud. Возможно задать более 1 зоны.

О зонах доступности

WorkerPool

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

Заметка

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

Worker Template Worker Template

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

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

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

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

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

Подробнее

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

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

Подробнее

VK_WORKER_IMAGE_ID ID образа операционной системы.

Подготовьте ОС в соответствии с инструкцией или используйте уже подготовленные образа

VK_WORKER_FLAVOR Шаблон конфигурации облака VK.

О Шаблонах конфигурации

VK_WORKER_DISK_TYPE Тип дисков.

Подробнее о типах дисков

VK_WORKER_DISK_SIZE Объём дискового пространства.

Измеряется в GiB.

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

VK_WORKER_ZONE Зона доступности VK Cloud. Возможно задать более 1 зоны.

О зонах доступности

Установка с помощью 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:
  clusterType: capi
  capiConfig:
    kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (3)
    # Раскомментируйте блок для установки из вашего регистри
    # registry:
    #   credentialsSecret:
    #     hostKey: host
    #     name: PRIVATE_REGISTRY_SECRET_NAME (5)
    #     namespace: PRIVATE_REGISTRY_SECRET_NAMESPACE (6)
    #     passwordKey: password
    #     usernameKey: username
    #   url: "PRIVATE_REGISTRY_URL (4)
    controlPlane:
      replicas: KCP_REPLICAS (7)
      endpoint:
        port: KUBE_API_PORT (8)
    infrastructure:
      sshAuthorizedKeys: (9)
        - ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@stsoft.ru
      provider: vk
      vkProviderConfig:
        projectId: VK_PROJECT_ID (10)
        regionName: VK_REGION_NAME (11)
        authConfig:
          credentials:
            password: VK_PASSWORD (12)
            username: VK_USERNAME (13)
          identityEndpoint: VK_ENDPOINT (14)
          userDomainName: VK_USER_DOMAN_NAME (15)
        privacy: VK_PRIVACY (16)
        network:
          externalNetworkName: VK_EXTERNAL_NETWORK_NAME (17)
          name: VK_NETWORK_NAME (18)
          useExisting: VK_NETWORK_EXIST (19)
        subNetwork:
          name: VK_SUBNETWORK_NAME (20)
        # Раскомментируйте блок для использования существующей подсети
        #   useExisting: true (21)
        # Раскомментируйте блок для создания новой подсети
        #   useExisting: false (22)
        #   cidr: VK_SUBNETWORK_CIDR} (23)
        router:
          name: {++VK_ROUTER_NAMEczjqqkd:149 (24)
          useExisting: czjqqkd:150VK_ROUTER_EXISTczjqqkd:151 (25)
        template:
          imageId: czjqqkd:152VK_CONTROLPLANE_IMAGE_IDczjqqkd:153 (26)
          availabilityZones: 
            - czjqqkd:154VK_CONTROLPLANE_ZONEczjqqkd:155 (27)
          flavorRef: czjqqkd:156VK_CONTROLPLANE_FLAVORczjqqkd:157 (28)
          volumeSize: czjqqkd:158VK_CONTROLPLANE_DISK_SIZEczjqqkd:159 (29)
          volumeType: czjqqkd:160VK_CONTROLPLANE_DISK_TYPEczjqqkd:161 (30)
    network:
      podsCidrBlocks:
        - czjqqkd:162SUBCLUSTER_POD_CIDRczjqqkd:163 (31)
      servicesCidrBlocks:
        - czjqqkd:164SUBCLUSTER_SERVICE_CIDRczjqqkd:165 (32)
    kubeletExtraArgsFlags:
      eviction-hard: ''
      eviction-max-pod-grace-period: ''
      eviction-minimum-reclaim: ''
      kube-reserved: ''
      max-pods: ''
      seccomp-default: ''
      system-reserved: ''

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

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

  2. Namespace управляющего кластера, который будет содержать объекты подчинённого кластера
  3. Версия Kubernetes. Поддерживаемые версии
  4. URL вашего репозитория образов.

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

  5. Имя secret для авторизации в приватный репозиторий образов
  6. Namespace, в котором размещен secret для авторизации в приватный репозиторий образов
  7. Количество узлов с ролью master.

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

  8. Порт kube-api. По-умолчанию 6443
  9. Список ssh-ключей, которые будут добавлены на узлы
  10. ID проекта в облаке VK.

    Можно узнать в "Настройках проекта" в разделе "Terraform" параметр "Project ID / tenant_id"

  11. Служебный параметр для работы с API.

    Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Region Name

  12. Пароль пользователя для авторизации в VK Cloud
  13. Имя пользователя для авторизации в VK Cloud
  14. URL для API доступа к вашему проекту.

    Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Auth URL"

  15. Технический параметр. Всегда будет "users".

    Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Auth URL"

  16. Выбор режима взаимодействия с кластером Поддерживаемые значения Public, PrivateMachines, Private. Подробнее
  17. Технический параметр. Всегда будет "ext-net"
  18. Имя сети VK CLoud. Несовместим с VK_NETWORK_ID
  19. true - использовать существующую сеть VK Cloud, false - создать новую
  20. Имя подсети VK CLoud. Несовместим с VK_SUBNETWORK_ID
  21. true в случае использования существующего ресурса, false для создания нового
  22. true в случае использования существующего ресурса, false для создания нового
  23. Адресное пространство для новой подсети VK CLoud. Несовместим с существующей подсетью
  24. Имя маршрутизатора VK CLoud. Несовместим с VK_ROUTER_ID
  25. true - использовать существующий роутер, false - создать новую
  26. ID образа операционной системы.

    Подготовьте ОС в соответствии с инструкцией или используйте уже подготовленные образа

  27. Зона доступности VK Cloud. Возможно задать более 1 зоны.

    О зонах доступности

  28. Шаблон конфигурации облака VK.

    О Шаблонах конфигурации

  29. Объём дискового пространства.

    Измеряется в GiB.

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

  30. Тип дисков.

    Подробнее о типах дисков

  31. Блок адресов для Pods.

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

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

    Пример:

    podsCidrBlocks: ["172.20.0.0/16"]

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

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

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

    Пример:

    servicesCidrBlocks: ["172.21.0.0/16"]

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: vk
    vkProviderConfig:
      imageId: VK_WORKER_IMAGE_ID (6)
      availabilityZones: 
        - VK_WORKER_ZONE (7)
      flavorRef: VK_WORKER_FLAVOR (8)
      volumeSize: VK_WORKER_DISK_SIZE (9)
      volumeType: VK_WORKER_DISK_TYPE (10)
  kubeletExtraArgsFlags:
    eviction-hard: ''
    eviction-max-pod-grace-period: ''
    eviction-minimum-reclaim: ''
    kube-reserved: ''
    max-pods: ''
    seccomp-default: ''
    system-reserved: ''
  roles:
    - name: bootsman-worker
1. Имя пула виртуальных машин 2. Namespace управляющего кластера, который будет содержать объекты подчинённого кластера 3. Имя подчиненного кластера.

Должен быть уникальным в пределах namespace. 4. Версия Kubernetes. Поддерживаемые версии 5. Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3 6. ID образа операционной системы.

Подготовьте ОС в соответствии с инструкцией или используйте уже подготовленные образа 7. Зона доступности VK Cloud. Возможно задать более 1 зоны.

О зонах доступности 8. Шаблон конфигурации облака VK.

О Шаблонах конфигурации 9. Объём дискового пространства.

Измеряется в GiB.

Требования к инфраструктуре 10. Тип дисков.

Подробнее о типах дисков

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