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

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

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

Заметка

Для работы кластера 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

Имя параметра Описание
YANDEX_PRIVACY Выбор режима взаимодействия с кластером.

Поддерживаемые значения Public, PrivateMachines, Private.

Подробнее

YANDEX_FOLDERID Директория в облаке Yandex.

Должна быть создана до запуска.

Как узнать мой FodlerID?

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

Подробнее


Авторизация

Заметка

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

Control Plane Control Plane

Control Plane Control Plane

Имя параметра Описание
YANDEX_AUTH_SECRET_NAMESPACE Namespace, в котором создан secret
YANDEX_AUTH_SECRET_NAME Имя secret с ключом авторизации
YANDEX_AUTH_SECRET_KEY Имя ключа в secret
YANDEX_AUTH_JSON Ключ авторизации Yandex Cloud

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

KCP Template KCP Template

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

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

YANDEX_CONTROLPLANE_PLATFORM_ID Тип процессора.

Типы Процессоров

YANDEX_CONTROLPLANE_CORES Число CPU.

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

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

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

YANDEX_CONTROLPLANE_DISK_TYPE Тип дисков.

Типы дисков

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

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

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

Зоны доступности

Выберите одну или более зон Yandex Cloud. Yandex Cloud Zone

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

KCP Template KCP Template

KCP Template KCP Template

Имя параметра Описание
YANDEX_NETWORK_NAME Имя сети Yandex Cloud.

Исключает установку YANDEX_NETWORK_ID

YANDEX_NETWORK_ID ID сети Yandex Cloud. Исключает установку YANDEX_NETWORK_NAME
YANDEX_SUBNETWORK_NAME Имя подсети Yandex Cloud.

Исключает установку YANDEX_SUBNETWORK_ID

YANDEX_SUBNETWORK_ID ID подсети Yandex Cloud. Исключает установку YANDEX_SUBNETWORK_NAME
YANDEX_SUBNETWORK_CIDR Адресное пространство для новой подсети Yandex Cloud

WorkerPool

Заметка

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

Add Worker Pool Add Worker Pool

WORKER Template WORKER Template

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

WORKER Template WORKER Template

WORKER Template WORKER Template

Заметка

Для большинства инсталляций используйте роль bootsman-worker.

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


WORKER MHC WORKER MHC

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

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

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

Подробнее

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

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

Подробнее


WORKER Template WORKER Template

WORKER Template WORKER Template

Имя параметра Описание
YANDEX_WORKER_PLATFORM_ID Тип процессора.

Типы Процессоров

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

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

YANDEX_WORKER_CORES Число CPU .

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

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

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

YANDEX_WORKER_DISK_TYPE Тип дисков.

Типы дисков

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

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

YANDEX_WORKER_RESOURCE_CONFIGURATION Фиксированные конфигурации для GPU машин

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

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

Заметка

Возможно использовать secret от установки управляющего кластера. В таком случае создавать secret_yandex_auth.yaml не нужно.

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

Заметка

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

kubectl apply -f secret_private_registry.yaml
kubectl apply -f secret_yandex_auth.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: v1
kind: Secret
metadata:
  name: YANDEX_AUTH_SECRET_NAME (1)
  namespace: YANDEX_AUTH_SECRET_NAMESPACE (2)
stringData: 
  YANDEX_AUTH_SECRET_KEY(3): YANDEX_AUTH_JSON (4)

  1. Имя secret с ключом авторизации
  2. Namespace, в котором создан secret
  3. Имя ключа в secret
  4. Ключ авторизации Yandex Cloud

apiVersion: provisioning.bootsman.tech/v1alpha1
kind: Cluster
metadata:
  name: SUBCLUSTER_NAME (1)
  namespace: SUBCLUSTER_NAMESPACE (2)
spec:
  bootsmanVersion: latest
  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 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
      provider: yandex 
      yandexProviderConfig:
        folderId: YANDEX_FOLDERID (10)
        zone: YANDEX_ZONE (11)
        network:
          name: YANDEX_NETWORK_NAME (12)
          useExisting: false (13)
        subNetworks:
          - availabilityZone: ru-central1-a (33)
        # Раскомментируйте блок для использования существующей подсети
          #   id: YANDEX_SUBNETWORK_ID (34)
          #   useExisting: true (15)
        # Раскомментируйте блок для создания новой подсети
          #   name: YANDEX_SUBNETWORK_NAME (14)
          #   podCIDR: YANDEX_SUBNETWORK_CIDR (16)
        authConfig:
          secretName: YANDEX_AUTH_SECRET_NAME (18)
          field: YANDEX_AUTH_SECRET_KEY (19)
        apiKeySecretRef:
          name: YANDEX_AUTH_SECRET_NAME (20)
          namespace: YANDEX_AUTH_SECRET_NAMESPACE (21)
        templateOptions:
          platformId: YANDEX_CONTROLPLANE_PLATFORM_ID (22)
          cores: YANDEX_CONTROLPLANE_CORES (23)
          memory: YANDEX_CONTROLPLANE_MEMORY (24)
          diskType: YANDEX_CONTROLPLANE_DISK_TYPE (25)
          diskSize: YANDEX_CONTROLPLANE_DISK_SIZE (26)
          imageId: YANDEX_CONTROLPLANE_IMAGE_ID (27)
          availabilityZones: (31)
            - ru-central1-a (32)
        privacy: YANDEX_PRIVACY (28)
    network:
      podsCidrBlocks: ["SUBCLUSTER_POD_CIDR"] (29)
      servicesCidrBlocks: ["SUBCLUSTER_SERVICE_CIDR"] (30)
    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. Директория в облаке Yandex.

    Должна быть создана до запуска.

    Как узнать мой FodlerID?

  11. Зона доступности облака Yandex.

    О Зонах Yandex

  12. Имя сети Yandex Cloud.

    Исключает установку YANDEX_NETWORK_ID

  13. true в случае использования существующего ресурса, false для создания нового
  14. Имя подсети Yandex Cloud.

    Исключает установку YANDEX_SUBNETWORK_ID

  15. true в случае использования существующего ресурса, false для создания нового
  16. Адресное пространство для новой подсети Yandex Cloud
  17. true в случае использования существующего ресурса, false для создания нового
  18. Имя secret с ключом авторизации
  19. Имя ключа в secret
  20. Имя secret с ключом авторизации
  21. Namespace, в котором создан secret
  22. Тип процессора.

    Типы Процессоров

  23. Число CPU.

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

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

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

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

    Типы дисков

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

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

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

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

  28. Выбор режима взаимодействия с кластером.

    Поддерживаемые значения Public, PrivateMachines, Private.

    Подробнее

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

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

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

    Пример:

    podsCidrBlocks: ["172.20.0.0/16"]

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

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

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

    Пример:

    servicesCidrBlocks: ["172.21.0.0/16"]

  31. Список зон, в которых будут размещены узлы кластера.

    Является неизменяемым параметром.

    Каждой зоне должна соответствовать своя подсеть(SubNetwork)

  32. Зона Yandex Cloud.

    Список доступных зон

  33. Зона Yandex Cloud.

    Список доступных зон

  34. ID подсети в Yandex Cloud

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: yandex
    yandexConfig:
      platformId: YANDEX_WORKER_PLATFORM_ID (6)
      cores: YANDEX_WORKER_CORES (7)
      memory: YANDEX_WORKER_MEMORY (8)
      diskType: YANDEX_WORKER_DISK_TYPE (9)
      diskSize: YANDEX_WORKER_DISK_SIZE (10)
      imageId: YANDEX_WORKER_IMAGE_ID (11)
      # Расскоментируйте для использования GPU. Внимание значения cores и memory нужно задать в соответствии с документацией Yandex Cloud
      # gpus: '' (12)
  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. Тип процессора.

    Типы Процессоров

  7. Число CPU .

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

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

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

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

    Типы дисков

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

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

  11. {{ no such element: dict object['YANDEX_TEMPLATE_IMAGE_ID'] }}
  12. Число GPU. Внимание значения platformId, cores и memory нужно задать в соответствии с документацией Yandex Cloud

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