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

Yandex Cloud

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

Заметка

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

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

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

Установка

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

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

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

Заметка

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

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

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

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

  1. Cluster Name
  2. Description

Cluster Name

Kubernetes Options

Kubernetes Options

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

Provider Configuration

Provider Configuration

Имя параметра Описание Комментарий
${YANDEX_ZONE} Зона доступности облака Yandex О Зонах Yandex
${YANDEX_PRIVACY} Выбор режима взаимодействия с кластером Поддерживаемые значения Public, PrivateMachines, Private. Подробнее
${YANDEX_FOLDERID} Директория в облаке Yandex Должна быть создана до запуска. Как узнать мой FodlerID?
${SSH_KEY_#} Публичный ключ, который будет добавлен на узлы подчиненного кластера

Private Registry

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

Private Registry Off

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

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} Пароль для пользователя в репозитории образов

Control Plane

Control Plane

Заметка

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

Имя параметра Описание Комментарий
${KCP_REPLICAS} Число реплик мастер-нод
${KUBE_API_PORT} Порт для kube-api По умолчанию 6443
Авторизация

Заметка

Используйте существующий секрет, с указанием namespace, имени и ключа для поиска

Control Plane

Имя параметра Описание Комментарий
${YANDEX_AUTH_SECRET_NAMESPACE} Namespace, в котором создан секрет
${YANDEX_AUTH_SECRET_NAME} Имя секрета с ключом авторизации
${YANDEX_AUTH_SECRET_KEY} Имя ключа в секрете авторизации
${YANDEX_AUTH_SECRET_VALUE} Ключ авторизации
Настройка Сети

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

KCP Template

KCP Template

KCP Template

Имя параметра Описание Комментарий
${YANDEX_NETWORK_NAME} Имя сети. Исключает установку ${YANDEX_NETWORK_ID}
${YANDEX_NETWORK_ID} ID сети. Исключает установку ${YANDEX_NETWORK_NAME}
${YANDEX_SUBNETWORK_NAME} Имя подсети. Исключает установку ${YANDEX_SUBNETWORK_ID}
${YANDEX_SUBNETWORK_ID} ID подсети. Исключает установку ${YANDEX_SUBNETWORK_NAME}
${YANDEX_SUBNETWORK_CIDR} адресное пространство для новой подсети
Шаблон виртуальных машин

KCP Template

Имя параметра Описание Комментарий
${YANDEX_KCP_IMAGE_ID} ID образа операционной системы Подготовьте ОС в соответсвии с инструкцией или используйте уже подготовленные образа
${YANDEX_KCP_PLATFORM_ID} Тип процессора Типы Процессоров
${YANDEX_KCP_CORES} Число CPU
${YANDEX_KCP_MEMORY} Объём оперативной памяти Измеряется в GiB
${YANDEX_KCP_DISK_TYPE} Тип дисков Типы дисков
${YANDEX_KCP_DISK_SIZE} Объём дискового пространства Измеряется в GiB

WorkerPool

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

Заметка

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

Add Worker Pool

Заметка

для установки GPU operator включите параметр GPU Подробнее

WORKER Template

WORKER Template

Имя параметра Описание Комментарий
${SUBCLUSTER_WORKERPOOL_NAME} Имя пул виртуальных машин
${WORKER_REPLICAS} Число виртуальных машин
${YANDEX_WORKER_PLATFORM_ID} Тип процессора Типы Процессоров
${YANDEX_WORKER_IMAGE_ID} ID образа операционной системы Подготовьте ОС в соответсвии с инструкцией или используйте уже подготовленные образа
${YANDEX_WORKER_CORES} Число CPU
${YANDEX_WORKER_MEMORY} Объём оперативной памяти Измеряется в GiB
${YANDEX_WORKER_DISK_TYPE} Тип дисков Типы дисков
${YANDEX_WORKER_DISK_SIZE} Объём дискового пространства Измеряется в GiB
${YANDEX_WORKER_RESOURCE_CONFIGURATION} Фиксированные конфигурации для GPU машин

Установка с помощью 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}
  namespace: ${SUBCLUSTER_NAMESPACE}
spec:
  bootsmanVersion: latest
  clusterType: capi
  capiConfig:
    kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
    # Раскомментируйте здесь для установки из вашего регистри
    # registry:
    #   url: ${PRIVATE_REGISTRY_URL}
    #   credentials:
    #     username: ${PRIVATE_REGISTRY_USERNAME}
    #     password: ${PRIVATE_REGISTRY_PASSWORD}
    controlPlane:
      replicas: ${KCP_REPLICAS}
      endpoint: 
        port: ${KUBE_API_PORT} 
    infrastructure:
      sshAuthorizedKeys:
        - >-
          ssh-ed25519 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
      provider: yandex 
      yandexProviderConfig:
        folderId: ${YANDEX_FOLDERID}
        zone: ${YANDEX_ZONE}
        network:
          name: ${YANDEX_NETWORK_NAME}
          useExisting: false
      # Раскомментируйте здесь для использования существующей подсети
      # subNetwork:
      #   name: ${YANDEX_SUBNETWORK_NAME}
      #   useExisting: true
      # Раскомментируйте здесь для создания новой подсети
      # subNetwork:
      #   name: ${YANDEX_SUBNETWORK_NAME}
      #   cidr:
      #     - ${YANDEX_SUBNETWORK_CIDR}
      #   useExisting: false
        authConfig:
          secretName: ${YANDEX_AUTH_SECRET}
          field: ${YANDEX_AUTH_SECRET_KEY}
        apiKeySecretRef:
          name: ${YANDEX_AUTH_SECRET}
          namespace: ${YANDEX_AUTH_SECRET_NAMESPACE}
        templateOptions:
          platformId: ${YANDEX_KCP_PLATFORM_ID}
          cores: ${YANDEX_KCP_CORES}
          memory: ${YANDEX_KCP_MEMORY}
          diskType: ${YANDEX_KCP_DISK_TYPE}
          diskSize: ${YANDEX_KCP_DISK_SIZE}
          imageId: ${YANDEX_KCP_IMAGE_ID}
        privacy: ${YANDEX_PRIVACY}
    network:
      podsCidrBlocks:
        - ${SUBCLUSTER_POD_CIDR}
      servicesCidrBlocks:
        - ${SUBCLUSTER_SERVICE_CIDR}
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
  name: ${SUBCLUSTER_WORKERPOOL_NAME}
  namespace: ${SUBCLUSTER_NAMESPACE}
spec:
  clusterName: ${SUBCLUSTER_NAME}
  kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
  replicas: ${WORKER_REPLICAS}
  infrastructure:
    provider: yandex
    yandexConfig:
      platformId: ${YANDEX_WORKER_PLATFORM_ID}
      cores: ${YANDEX_WORKER_CORES}
      memory: ${YANDEX_WORKER_MEMORY}
      diskType: ${YANDEX_WORKER_DISK_TYPE}
      diskSize: ${YANDEX_WORKER_DISK_SIZE}
      imageId: ${YANDEX_WORKER_IMAGE_ID}
      # Расскоментируйте для использования GPU. Внимание значения cores и memory нужно задать в соотвествии с документацией Yandex Cloud
      # gpus: ''
  kubeletExtraArgs:
    kubeReserved: ''
    systemReserved: ''
    evictionHard: ''
    evictionMinimumReclaim: ''
    evictionMaxPodGracePeriod: ''
    maxPods: ''