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

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

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

Заметка

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

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

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

Установка

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

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

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

Заметка

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

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

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

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

  1. Cluster Name

Cluster Name Cluster Name

Kubernetes Options

Kubernetes Options Kubernetes Options

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

Provider Configuration

Provider Configuration Provider Configuration

Имя параметра Описание Комментарий
BREST_AUTH_URL IP-адрес или DNS-имя Brest. Пример: http://10.0.0.10:2633/RPC2

Заметка

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

Заметка

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

Provider Configuration Provider Configuration

Provider Configuration Provider Configuration

Имя параметра Описание Комментарий
BREST_AUTH_SECRET_NAMESPACE Имя namespace, в котором размещен secret для авторизации
BREST_AUTH_SECRET_NAME Имя секрета с авторизацией в Brest
BREST_AUTH_USERNAME Пользователь Brest
BREST_AUTH_PASSWORD Пароль пользователя Brest
BREST_AUTH_SECRET_USERNAME_KEY Ключ в секрете для хранения имени пользователя Brest
BREST_AUTH_SECRET_PASSWORD_KEY Ключ в секрете для хранения пароля пользователя Brest

Provider Configuration Provider Configuration

Имя параметра Описание Комментарий
${SSH_KEY_#} Публичный ключ, который будет добавлен на узлы подчиненного кластера

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 вашего репозитория образов
PRIVATE_REGISTRY_SECRET_NAMESPACE Namespace секрета
PRIVATE_REGISTRY_SECRET_NAME Имя секрета
PRIVATE_REGISTRY_USERNAME Имя пользователя в репозитории образов
PRIVATE_REGISTRY_PASSWORD Пароль для пользователя в репозитории образов
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 ControlPlane подчиненного кластера.

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

KUBE_API_PORT Порт для kube-api По-умолчанию 6443
MHC_MAX_UNHEALTY Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления Для узлов с ролью master, значение по-умолчанию 100%
MHC_TIMEOUT Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck По-умолчанию 10m
Шаблон виртуальных машин

KCP Template KCP Template

Имя параметра Описание Комментарий
BREST_TEMPLATE_IMAGE_NAME Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины
BREST_VM_CONTROLPLANE_CPU Число vCPU Требования к инфраструктуре
BREST_VM_CONTROLPLANE_MEMORY_GB Объём оперативной памяти.

Пример: 8Gi

Требования к инфраструктуре
BREST_VM_CONTROLPLANE_DISK_GB Объём дискового хранилища.

Пример: 45Gi

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

KCP Template KCP Template

KCP Template KCP Template

Имя параметра Описание Комментарий
BREST_NETWORK_NAME Имя сети, в которую будут подключены новые виртуальные машины
BREST_NETWORK_ID ID существующей сети. Аналог BREST_NETWORK_NAME
BREST_NETWORK_ADDRESS Начало DHCP-пула Бреста
BREST_NETWORK_SIZE Число IP-адресов в DHCP-пуле
BREST_NETWORK_PHYDEV Физическое устройство на узле
BREST_NETWORK_VLAN_ID vlan ID внутри гипервизора Брест
BREST_NETWORK_GATEWAY Адрес шлюза
BREST_NETWORK_DNS Опционально. Адрес dns-сервера

WorkerPool

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

Заметка

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

Add Worker Pool Add Worker Pool

Workerpool Template Workerpool Template

Имя параметра Описание Комментарий
SUBCLUSTER_WORKERPOOL_NAME Имя workerpool кластера.

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

WORKER_REPLICAS Число виртуальных машин
MHC_MAX_UNHEALTY Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления Для узлов с ролью master, значение по-умолчанию 100%
MHC_TIMEOUT Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck По-умолчанию 10m
BREST_TEMPLATE_IMAGE_NAME Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины
BREST_VM_WORKERPOOL_CPU Число vCPU Требования к инфраструктуре
BREST_VM_WORKERPOOL_MEMORY_GB Объём оперативной памяти.

Пример: 12Gi

Требования к инфраструктуре
BREST_VM_WORKERPOOL_DISK_GB Объём дискового хранилища.

Пример: 60Gi

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

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

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

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

kubectl apply -f secret_brest_auth.yaml
kubectl apply -f cluster.yaml
kubectl apply -f workerpool.yaml

apiVersion: v1
kind: Secret
metadata:
  name: BREST_AUTH_SECRET_NAME (1)
  namespace: BREST_AUTH_SECRET_NAMESPACE (2)
data:
  password: BREST_AUTH_PASSWORD (3)
  username: BREST_AUTH_USERNAME (4)

  1. Имя secret для авторизации в Брест.

    Один секрет может использоваться несколькими подчиненными кластерами.

  2. Имя namespace.

    Может быть размещен в отдельном namespace относительно объектов подчиненного кластера.

  3. Пароль для авторизации в Брест.
  4. Имя пользователя для авторизации в Брест

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: brest
      sshAuthorizedKeys: (6)
            - >-
              ssh-ed25519 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
      brestProviderConfig:
        authConfig:
          identityEndpoint: BREST_AUTH_URL (7)
          passwordKey: password (8)
          secret:
            name: BREST_AUTH_SECRET_NAME (9)
            namespace: BREST_AUTH_SECRET_NAMESPACE (10)
          usernameKey: username (11)
        machineOptions:
          cpu: BREST_VM_CONTROLPLANE_CPU (12)
          disk: BREST_VM_CONTROLPLANE_MEMORY_GB (13)
          memory: BREST_VM_CONTROLPLANE_DISK_GB (14)
          template:
            name: BREST_TEMPLATE_IMAGE_NAME (15)
        network:
          name: BREST_NETWORK_NAME (16)
          useExisting: true (17)
        privacy: Private (18)
    kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (19)
    network:
      podsCidrBlocks:
        - SUBCLUSTER_POD_CIDR (20)
      servicesCidrBlocks:
        - SUBCLUSTER_SERVICE_CIDR (21)
    registry:
      url: PRIVATE_REGISTRY_URL (22)
      credentials:
        username: PRIVATE_REGISTRY_USERNAME (23)
        password: PRIVATE_REGISTRY_PASSWORD (24)
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''

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

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

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

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

  4. IP ControlPlane подчиненного кластера.

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

  5. Порт kube-api. По-умолчанию 6443
  6. Список ssh-ключей, которые будут добавлены на узлы
  7. IP-адрес или DNS-имя Brest.

    Пример: http://10.0.0.10:2633/RPC2

  8. Имя ключа, содержащего пароль в secret. По-умолчанию - password
  9. Имя secret с авторизацией в Brest
  10. Имя namespace, в котором размещен secret для авторизации
  11. Имя ключа, содержащего имя пользователя в secret. По-умолчанию - username
  12. Число vCPU
  13. Объём оперативной памяти.

    Пример: 8Gi.

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

  14. Объём дискового хранилища.

    Пример: 45Gi.

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

  15. Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины
  16. Имя сети, в которую будут подключены новые виртуальные машины
  17. true - использовать существующую сеть
  18. Брест поддерживает только Private
  19. Версия Kubernetes. Поддерживаемые версии
  20. Блок адресов для Pods.

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

    Минимальный размер блока /16
    Пример:

      podsCidrBlocks:
        - "172.20.0.0/16"
    
  21. Блок адресов для Service.

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

    Минимальный размер блока /16
    Пример:

      servicesCidrBlocks:
        - "172.21.0.0/16"
    
  22. URL вашего репозитория образов
  23. Имя пользователя в репозитории образов
  24. Пароль для пользователя в репозитории образов

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: brest
    brestProviderConfig:
      cpu: BREST_VM_WORKERPOOL_CPU (6)
      disk: BREST_VM_WORKERPOOL_DISK_GB (7)
      memory: BREST_VM_WORKERPOOL_MEMORY_GB (8)
      template:
        name: BREST_TEMPLATE_IMAGE_NAME (9)
  kubeletExtraArgs:
    kubeReserved: ''
    systemReserved: ''
    evictionHard: ''
    evictionMinimumReclaim: ''
    evictionMaxPodGracePeriod: ''
    maxPods: ''

  1. Имя workerpool кластера.

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

  2. Имя namespace, должен соответствовать имени namespace указанный в Cluster.yaml
  3. Имя кластера SUBCLUSTER_NAME, к которому будет подключен workerpool
  4. Версия Kubernetes.

    Может принимать значения указанные в cluster.yaml и ниже из числа поддерживаемых.

    Поддерживаемые версии){target="_blank"}

  5. Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
  6. Число vCPU
  7. Объём оперативной памяти.

    Пример: 12Gi.

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

  8. Объём дискового хранилища.

    Пример: 60Gi.

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

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