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

Baremetal

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

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

  • Успешная установка управляющего кластера 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} Подсеть для сервисов подчинённого кластера Не пересекается с управляющим или другим подчинённым кластером
${OS} Используемая операционная система для подчинённого кластера
${REGISTRY_URL} Подсеть для сервисов подчинённого кластера Не пересекается с управляющим или другим подчинённым кластером

Далее заполните поля в блоке "Control Plane"

KCP Begin

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

Далее добавьте информацию о приватном репозитории

Private Registry

Имя параметра Описание Комментарий
${REGISTRY_DOMAIN_NAME} Доменное имя вашего регистри
${REGISTRY_USERNAME} Пользователь для вашего регистри Измеряется в MiB
${REGISTRY_PASSWORD} Пароль для вашего регистри Измеряется в GiB
${REGISTRY_URL} Полный путь до образов внутри вашего регистри Измеряется в GiB

Дальнейшая настройка касается создания пула worker-нод

Заметка

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

Add Worker Pool

Worker Template

Имя параметра Описание Комментарий
${SUBCLUSTER_WORKERPOOL_NAME} Имя пул виртуальных машин
${WORKER_REPLICAS} Число виртуальных машин

Установка с помощью 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:
  clusterType: capi
  capiConfig:
    kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
    registry:
      url: ${REGISTRY_DOMAIN_NAME}
      credentials:
        username: ${REGISTRY_USERNAME}
        password: ${REGISTRY_PASSWORD}
    controlPlane:
      replicas: ${KCP_REPLICAS}
      endpoint:
        host: ${KCP_IP}
        port: ${KUBE_API_PORT}
    infrastructure:
      provider: baremetal
      bareMetalProviderConfig:
        selector:
          matchLabels: {}
        os: ${OS}
        bundleRepo: ${REGISTRY_URL}
        resources:
          requests: {}
          limits: {}
    network:
      podsCidrBlocks:
        - ${SUBCLUSTER_POD_CIDR}
      servicesCidrBlocks:
        - ${SUBCLUSTER_SERVICE_CIDR}
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''
  airgap:
    repository: ${REGISTRY_URL}
  addons:
    repoURL: ${REGISTRY_URL}
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
  name: ${SUBCLUSTER_WORKERPOOL_NAME}
  namespace: ${SUBCLUSTER_NAMESPACE}
spec:
  clusterName: ${SUBCLUSTER_NAME}
  infrastructure:
    bareMetalProviderConfig:
      bundleRepo: ${REGISTRY_URL}
      os: ${OS}
      resources:
        limits: {}
        requests: {}
      selector:
        matchLabels: {}
    provider: baremetal
  kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
  replicas: ${WORKER_REPLICAS}