Установить Kubeflow
В инструкции мы рассматриваем установку Kubeflow версии 1.5. Также инструкция подходит для установки версии 1.6
- Подключите ML-платформу Selectel.
- Создайте облачный сервер с операционной системой Linux.
- Подключитесь к облачному серверу.
- Установите kustomize на облачном сервере.
- Установите kubectl на облачном сервере.
- Установите Kubeflow на облачном сервере.
Подключить ML-платформу
Для работы Kubeflow нужен кластер Kubernetes с StorageClass. Подключите ML-платформу — будет автоматически создан готовый к работе кластер Managed Kubernetes.
Рекомендованные версии кластера Managed Kubernetes:
Kubeflow | Managed Kubernetes |
---|---|
1.5 | 1.21 |
1.6 | 1.22 |
Создать облачный сервер
Для установки Kubeflow 1.5 необходим kustomize версии 3.2.0 (для Kubeflow 1.6 тоже можно использовать версию 3.2.0). Собранный бинарный файл для установки kustomize 3.2.0 есть только для операционной системы Linux и amd64, поэтому в инструкции мы рассматриваем установку всех компонентов на облачном сервере с Linux.
Если вы используете другую архитектуру CPU или другую операционную систему, то могут возникнуть проблемы с использованием kustomize версии 3.2.0
В панели управления перейдите в раздел Облачная платформа → Серверы.
Нажмите Создать сервер.
В блоке Источник нажмите Выбрать другой источник и выберите готовый образ с операционной системой Linux (например, Ubuntu 18.04).
Выберите загрузочный диск сервера. Можно выбрать:
- локальный диск — отметьте чекбокс Локальный SSD NVMe диск;
- сетевой диск — выберите тип диска и укажите размер.
Мы рекомендуем использовать диск размером не менее 5 ГБ (минимальный доступный размер) — на облачном сервере требуется место для бинарного файла kustomize (~25 МБ) и манифеста Kubeflow (~7 МБ).
В блоке Сеть выберите приватную подсеть с публичным IP-адресом. IP-адрес нужен для подключения к серверу по SSH.
Создайте SSH-ключ и скопируйте его публичную часть. В блоке Доступ нажмите Загрузить SSH-ключ и вставьте публичную часть ключа. Нажмите Добавить ключ.
Выберите остальные настройки сервера — подробнее в инструкции Создать облачный сервер.
Нажмите Создать.
Подключиться к облачному серверу
В панели управления перейдите в раздел Облачная платформа → Серверы.
В строке с облачным сервером скопируйте значение в столбце IP-адрес.
Подключитесь к облачному серверу по SSH:
ssh root@<IP_address> -i <path_to_private_key>
Укажите:
<IP_address>
— публичный IP-адрес облачного сервера, скопированный на шаге 2;<path_to_private_key>
— путь до приватной части ключа.
Установить kustomize на облачном сервере
Kubeflow 1.5.0 не совместим с версиями kustomize выше 4.х — мы рассматриваем установку kustomize версии 3.2.0
Загрузите бинарный файл с дистрибутивом kustomize на облачный сервер:
wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64
Установите kustomize:
install -o root -g root -m 0755 kustomize_3.2.0_linux_amd64 /usr/local/bin/kustomize
Проверьте, что kustomize установлен:
kustomize version
Ответ:
Version: {KustomizeVersion:3.2.0 GitCommit:a3103f1e62ddb5b696daa3fd359bb6f2e8333b49 BuildDate:2019-09-18T16:26:36Z GoOs:linux GoArch:amd64}
Установить kubectl на облачном сервере
Загрузите дистрибутив kubectl на облачный сервер:
curl -LO https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl
Установите kubectl:
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
В панели управления перейдите в раздел Облачная платформа → Kubernetes.
Откройте страницу кластера → вкладка Настройки.
Нажмите Скачать kubeconfig.
Отключитесь от облачного сервера и откройте терминал на локальной машине.
Скопируйте конфигурационный файл с локальной машины на облачный сервер:
scp -i <~/.ssh/id_rsa> <~/Downloads/kubeconfig.yaml> root@<IP_address>:/root/<kubeconfig.yaml>
Укажите:
<~/.ssh/id_rsa>
— путь на локальной машине до SSH-ключа, который был сгенерирован на шаге 6 инструкции Создать облачный сервер;<~/Downloads/kubeconfig.yaml>
— путь на локальной машине до конфигурационного файла, который был скачан на шаге 6;<IP_address>
— публичный IP-адрес облачного сервера;<kubeconfig.yaml>
— имя конфигурационного файла.
Проверьте, что конфигурационный файл загружен:
ls -ailh
Экспортируйте конфигурационный файл:
export KUBECONFIG=/root/<kubeconfig.yaml>
Укажите
<kubeconfig.yaml>
— имя конфигурационного файла.Проверьте, что kubectl установлен:
kubectl version
Ответ:
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Обратитесь к кластеру через kubectl:
kubectl get nodes
Ноды должны быть в статусе Ready.
Установить Kubeflow на облачном сервере
Установите git:
apt update
apt install gitКлонируйте репозиторий с манифестами Kubeflow:
git clone [https://github.com/kubeflow/manifests.git](https://github.com/kubeflow/manifests.git)
Перейдите в папку с манифестами:
cd manifests/
Откройте ветку:
git checkout v1.5-branch
Убедитесь, что открыта нужная ветка:
git branch -a
Ответ:
master
* v1.5-branchУстановите официальные компоненты Kubeflow:
while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
Проверьте, что все пространства имен активны:
kubectl get namespaces
Если при установке возникли ошибки, установите компоненты отдельно — используйте документацию Kubeflow.
Проверьте, что все компоненты активны — у них должен быть статус Running:
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Пробросьте порты:
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
Откройте в браузере страницу
http://localhost:8080
Для подключения к Kubeflow введите данные по умолчанию — логин (
user@example.com
) и пароль (12341234
).