---
title: 'Установить Kubeflow'
sidebar_position: 1
description: 'Как установить kustomize, kubectl и платформу Kubeflow для машинного обучения'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import {CustomTable} from 'docs-kit/components'
import CopyIcon from 'docs-kit/icons/copy'

# Установить Kubeflow

:::info

В инструкции мы рассматриваем установку Kubeflow версии 1.5. Также инструкция подходит для установки версии 1.6.

:::

1. [Подключите ML-платформу Selectel](#order-ml-platform).
2. [Создайте облачный сервер с операционной системой Linux](#create-cloud-server).
3. [Подключитесь к облачному серверу](#connect-to-cloud-server).
4. [Установите kustomize на облачном сервере](#install-kustomize-on-cloud-server).
5. [Установите kubectl на облачном сервере](#install-kubectl-on-cloud-server).
6. [Установите Kubeflow на облачном сервере](#install-kubeflow-on-cloud-server).

## Подключить ML-платформу \{#order-ml-platform}

Для работы Kubeflow нужен кластер Kubernetes с StorageClass. [Подключите ML-платформу](/ml-platform/about-ml-platform.mdx#order-platform) — будет автоматически создан готовый к работе кластер Managed Kubernetes.

Рекомендованные версии кластера Managed Kubernetes:

<CustomTable>
  <table data-sticky>
    <thead>
      <tr>
        <th>Kubeflow</th>
        <th>Managed Kubernetes</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td>1.5</td>
        <td>1.21</td>
      </tr>

      <tr>
        <td>1.6</td>
        <td>1.22</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Создать облачный сервер \{#create-cloud-server}

Для установки Kubeflow 1.5 необходим kustomize версии 3.2.0 (для Kubeflow 1.6 тоже можно использовать версию 3.2.0). Собранный бинарный файл для установки kustomize 3.2.0 есть только для операционной системы Linux и amd64, поэтому в инструкции мы рассматриваем установку всех компонентов на облачном сервере с Linux.

:::info

Если вы используете другую архитектуру CPU или другую операционную систему, то могут возникнуть проблемы с использованием kustomize версии 3.2.0.

:::

1. В [панели управления](https://my.selectel.ru/vpc/default/servers/) в верхнем меню нажмите **Продукты** и выберите **Облачные серверы**.

2. Нажмите **Создать сервер**.

3. В блоке **Источник** откройте вкладку **ОС** и выберите образ с операционной системой Linux (например, Ubuntu 18.04).

4. Выберите загрузочный диск сервера. Можно выбрать:

   * [локальный диск](/cloud-servers/volumes/about-local-disks.mdx) — отметьте чекбокс **Локальный SSD NVMe диск**;
   * [сетевой диск](/cloud-servers/volumes/about-network-volumes.mdx) — выберите [тип диска](/cloud-servers/volumes/about-network-volumes.mdx#network-volume-types) и укажите размер.

   Мы рекомендуем использовать диск размером не менее 5 ГБ (минимальный доступный размер) — на облачном сервере требуется место для бинарного файла kustomize (~25 МБ) и манифеста Kubeflow (~7 МБ).

5. В блоке **Сеть** выберите приватную подсеть с публичным IP-адресом. IP-адрес нужен для подключения к серверу по SSH.

6. [Создайте SSH-ключ и скопируйте его публичную часть](/cloud-servers/manage/create-and-place-ssh-key.mdx#create-ssh-keys). В блоке **Доступ** нажмите **Загрузить SSH-ключ** и вставьте публичную часть ключа. Нажмите **Добавить ключ**.

7. Выберите остальные настройки сервера — подробнее в инструкции [Создать облачный сервер](/cloud-servers/create/create-server.mdx).

8. Нажмите **Создать**.

## Подключиться к облачному серверу \{#connect-to-cloud-server}

1. В [панели управления](https://my.selectel.ru/vpc/default/servers/) в верхнем меню нажмите **Продукты** и выберите **Облачные серверы**.
2. В строке облачного сервера в столбце **IP-адрес** нажмите <CopyIcon />.
3. Подключитесь к облачному серверу по SSH:

   ```bash
   ssh root@<IP_address> -i <path_to_private_key>
   ```

   Укажите:

   * `<IP_address>` — публичный IP-адрес облачного сервера, скопированный на шаге 2;
   * `<path_to_private_key>` — путь до приватной части ключа.

## Установить kustomize на облачном сервере \{#install-kustomize-on-cloud-server}

Kubeflow 1.5.0 не совместим с версиями kustomize выше 4.х — мы рассматриваем установку kustomize версии 3.2.0.

1. Загрузите бинарный файл с дистрибутивом kustomize на облачный сервер:

   ```bash
   wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64
   ```

2. Установите kustomize:

   ```bash
   install -o root -g root -m 0755 kustomize_3.2.0_linux_amd64 /usr/local/bin/kustomize
   ```

3. Проверьте, что kustomize установлен:

   ```bash
   kustomize version
   ```

   Ответ:

   ```bash
   Version: {KustomizeVersion:3.2.0 GitCommit:a3103f1e62ddb5b696daa3fd359bb6f2e8333b49 BuildDate:2019-09-18T16:26:36Z GoOs:linux GoArch:amd64}
   ```

## Установить kubectl на облачном сервере \{#install-kubectl-on-cloud-server}

1. Загрузите дистрибутив kubectl на облачный сервер:

   ```bash
   curl -LO 'https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl'
   ```

2. Установите kubectl:

   ```bash
   install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
   ```

3. В [панели управления](https://my.selectel.ru/mks/) в верхнем меню нажмите **Продукты** и выберите **Managed Kubernetes**.

4. В разделе **Кластеры** откройте страницу кластера → вкладка **Настройки**.

5. Нажмите **Скачать kubeconfig**.

6. Отключитесь от облачного сервера и откройте терминал на локальной машине.

7. Скопируйте конфигурационный файл с локальной машины на облачный сервер:

   ```bash
   scp -i <~/.ssh/id_rsa> <~/Downloads/kubeconfig.yaml> root@<IP_address>:/root/<kubeconfig.yaml>
   ```

   Укажите:

   * `<~/.ssh/id_rsa>` — путь на локальной машине до SSH-ключа, который был сгенерирован на шаге 6 инструкции [Создать облачный сервер](#create-cloud-server);
   * `<~/Downloads/kubeconfig.yaml>` — путь на локальной машине до конфигурационного файла, который был скачан на шаге 6;
   * `<IP_address>` — публичный IP-адрес облачного сервера;
   * `<kubeconfig.yaml>` — имя конфигурационного файла.

8. [Подключитесь к облачному серверу](#connect-to-cloud-server).

9. Проверьте, что конфигурационный файл загружен:

   ```bash
   ls -ailh
   ```

10. Экспортируйте конфигурационный файл:

    ```bash
    export KUBECONFIG=/root/<kubeconfig.yaml>
    ```

    Укажите `<kubeconfig.yaml>` — имя конфигурационного файла.

11. Проверьте, что kubectl установлен:

    ```bash
    kubectl version
    ```

    Ответ:

    ```bash
    Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.13", GitCommit:"592eca05be27f7d927d0b25cbb4241d75a9574bf", GitTreeState:"clean", BuildDate:"2022-10-12T10:50:48Z", GoVersion:"go1.17.13", Compiler:"gc", Platform:"linux/amd64"}
    WARNING: version difference between client (1.21) and server (1.23) exceeds the supported minor version skew of +/-1
    ```

12. Обратитесь к кластеру через kubectl:

    ```bash
    kubectl get nodes
    ```

    Ноды должны быть в статусе Ready.

## Установить Kubeflow на облачном сервере \{#install-kubeflow-on-cloud-server}

1. Установите git:

   ```bash
   apt update
   apt install git
   ```

2. Клонируйте репозиторий с манифестами Kubeflow:

   ```bash
   git clone [https://github.com/kubeflow/manifests.git](https://github.com/kubeflow/manifests.git)
   ```

3. Перейдите в папку с манифестами:

   ```bash
   cd manifests/
   ```

4. Откройте ветку:

   ```bash
   git checkout v1.5-branch
   ```

5. Убедитесь, что открыта нужная ветка:

   ```bash
   git branch -a
   ```

   Ответ:

   ```bash
   master

   * v1.5-branch
   ```

6. Установите официальные компоненты Kubeflow:

   ```bash
   while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
   ```

7. Проверьте, что все пространства имен активны:

   ```bash
   kubectl get namespaces
   ```

8. Если при установке возникли ошибки, установите компоненты отдельно — используйте [документацию Kubeflow](https://github.com/kubeflow/manifests#install-individual-components).

9. Проверьте, что все компоненты активны — у них должен быть статус Running:

   ```bash
   kubectl get pods -n auth
   kubectl get pods -n cert-manager
   kubectl get pods -n istio-system
   kubectl get pods -n knative-eventing
   kubectl get pods -n kserve
   kubectl get pods -n knative-serving
   kubectl get pods -n kubeflow
   kubectl get pods -n kubeflow-user-example-com
   ```

10. Пробросьте порты:

    ```bash
    kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
    ```

11. Откройте в браузере страницу `http://localhost:8080`.

12. Для подключения к Kubeflow введите данные по умолчанию — логин (`user@example.com`) и пароль (`12341234`).

<Formbricks />
