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

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

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

Заметка

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

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

  • Успешная установка управляющего кластера Bootsman
  • 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

Заметка

Для установки подчиненного кластера необходимо подготовить три sub-master и три sub-worker узла, аналогично подготовке машин из документации по установке управляющего кластера.

Установка

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

  • Использовать установщик 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

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

Предупреждение

K8SCPIP - это IP-адрес, который будет использоваться как адрес kube-apiserver. Он должен быть зарезервирован под задачу обеспечения отказоустойчивости IP сервера и не должен выделяться каким либо другим ресурсом

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

Подробнее

MATCH_LABEL_KEY Опционально. Выбор узла из списка ByoHost по лейблу
MATCH_LABEL_VALUE Выбор узла из списка ByoHost по лейблу
MATCH_RESOURCE_TYPE Опционально. Выбор узла из списка ByoHost по типу ресурсов
MATCH_RESOURCE_RESERVATION Опционально. Минимальное требуемое число ресурсов. Узлы с меньшим значением не будут использованы
MATCH_RESOURCE_LIMIT Опционально. Максимальное требуемое число ресурсов. Узлы с большим значением не будут использованы

WorkerPool

Заметка

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

Add Worker Pool Add Worker Pool

Заметка

Для работы графических ускорителей установите значения для выбора узлов по GPU ( MATCH_RESOURCE_TYPE и MATCH_RESOURCE_RESERVATION )
Если потребуется используйте дополнительные селекторы по LABEL

Worker Template Worker Template

Имя параметра Описание
SUBCLUSTER_WORKERPOOL_NAME Имя пула виртуальных машин
WORKER_REPLICAS Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
MHC_MAX_UNHEALTY Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.

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

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

Подробнее

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

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

Подробнее

MATCH_LABEL_KEY Опционально. Выбор узла из списка ByoHost по лейблу
MATCH_LABEL_VALUE Выбор узла из списка ByoHost по лейблу
MATCH_RESOURCE_TYPE Опционально. Выбор узла из списка ByoHost по типу ресурсов
MATCH_RESOURCE_RESERVATION Опционально. Минимальное требуемое число ресурсов. Узлы с меньшим значением не будут использованы
MATCH_RESOURCE_LIMIT Опционально. Максимальное требуемое число ресурсов. Узлы с большим значением не будут использованы

Установка с помощью 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 (1)
  namespace: SUBCLUSTER_NAMESPACE (2)
spec:
  clusterType: capi
  capiConfig:
    kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (3)
    registry:
      url: REGISTRY_URL (4)
      credentials:
        username: REGISTRY_USERNAME (5)
        password: REGISTRY_PASSWORD (6)
    controlPlane:
      replicas: KCP_REPLICAS (7)
      endpoint:
        host: KCP_IP (8)
        port: KUBE_API_PORT (9)
    infrastructure:
      provider: baremetal
      bareMetalProviderConfig:
        selector:
          matchLabels: 
            MATCH_LABEL_KEY:MATCH_LABEL_VALUE (10)
        resources:
          requests: 
            MATCH_RESOURCE_TYPE:MATCH_RESOURCE_RESERVATION (11)
          limits: 
            MATCH_RESOURCE_TYPE:MATCH_RESOURCE_LIMIT (12)
    network:
      podsCidrBlocks:
        - SUBCLUSTER_POD_CIDR (13)
      servicesCidrBlocks:
        - SUBCLUSTER_SERVICE_CIDR (14)
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''

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

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

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

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

  5. Имя пользователя в репозитории образов.

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

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

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

  7. Количество узлов с ролью master.

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

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

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

  9. Порт kube-api. По-умолчанию 6443
  10. Опционально.

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

  11. Опционально.

    Выбор узла по минимальному требуемым ресурсам, по которым требуется выбирать узлы из списка свободных byohost. Byohost находящийся ниже этой границы использованы не будут

  12. Опционально.

    Выбор узла по максимальным требуемым ресурсам, по которым требуется выбирать узлы из списка свободных byohost. Byohost находящийся выше этой границы использованы не будут

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

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

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

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

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

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

      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: baremetal
    bareMetalProviderConfig:
      selector:
        matchLabels: 
          MATCH_LABEL_KEY:MATCH_LABEL_VALUE (6)
      resources:
        requests: 
          MATCH_RESOURCE_TYPE:MATCH_RESOURCE_RESERVATION (7)
        limits: 
          MATCH_RESOURCE_TYPE:MATCH_RESOURCE_LIMIT (8)
  kubeletExtraArgs:
    kubeReserved: ''
    systemReserved: ''
    evictionHard: ''
    evictionMinimumReclaim: ''
    evictionMaxPodGracePeriod: ''
    maxPods: ''

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

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

  2. Имя namespace, должен соответствовать имени namespace указанный в Cluster.yaml
  3. Имя кластера SUBCLUSTER_NAME, к которому будет подключен workerpool
  4. Версия Kubernetes. Поддерживаемые версии
  5. Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
  6. Опционально.

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

  7. Опционально.

    Выбор узла по минимальному требуемым ресурсам, по которым требуется выбирать узлы из списка свободных byohost. Byohost находящийся ниже этой границы использованы не будут

  8. Опционально.

    Выбор узла по максимальным требуемым ресурсам, по которым требуется выбирать узлы из списка свободных byohost. Byohost находящийся выше этой границы использованы не будут

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