Подготовка Kubeflow на macOS с помощью MicroK8s

Простые шаги по запуску Kubeflow на вашем Mac (подсказка: это не «установка с помощью Helm…»)

MicroK8s

MicroK8s - это полностью совместимая реализация mini Kubernetes. Благодаря своей крошечной занимаемой площади он идеально подходит для локальной установки. Устанавливаем с пивом:

➜ brew install ubuntu/microk8s/microk8s

После установки на вашем компьютере мы можем подготовить локальный кластер следующим образом:

➜ microk8s install --cpu 2 --mem 8

Дополнительные параметры --cpu и --mem увеличивают количество ЦП и выделение памяти, что будет полезно позже, когда мы начнем экспериментировать с Kubeflow. Если все пойдет хорошо, вы должны увидеть следующий результат:

Launched: microk8s-vm
2020-10-26T00:29:20-07:00 INFO Waiting for automatic snapd restart...
microk8s v1.19.0 from Canonical✓ installed

Под капотом Microk8s предоставляется на многопроходном режиме - оркестраторе виртуальных машин, который абстрагирует вашу операционную систему, что особенно полезно на машинах, не основанных на Linux. Вы можете подтвердить, что виртуальная машина была предоставлена ​​запрошенным через многопроходный интерфейс командной строки:

➜  multipass info --all
Name:           microk8s-vm
State:          Running
IPv4:           192.168.64.2
Release:        Ubuntu 18.04.5 LTS
Image hash:     9fdd8fa3091b (Ubuntu 18.04 LTS)
Load:           1.59 1.18 0.60
Disk usage:     2.1G out of 48.3G
Memory usage:   811.9M out of 7.8G

Настройка kubectl для microk8s

Поскольку microk8s является полностью совместимой реализацией Kubernetes, мы можем использовать kubectl для взаимодействия с ней с небольшой настройкой. Сначала проверим, установлен ли kubectl на вашем компьютере:

➜ which kubectl
/usr/local/bin/kubectl

Отлично, kubectl здесь. Если нет, быстро brew install kubectl доставит вас туда. Далее настроим его для microk8s. Здесь снова есть два варианта: либо существующая конфигурация, и в этом случае мы будем добавлять к ней microk8, либо это «чистая» kubectl установка. Запустите kubectl config get-contexts, чтобы узнать, какой именно. Если вы не видите никаких записей в выводе, это означает, что это новая установка, и вам нужно запустить ее, чтобы настроить kubectl:

➜ microk8s config > ~/.kube/config

Если записи уже были на месте, вам нужно будет объединить конфигурацию microk8s с вашей kubectl конфигурацией. Вы можете сделать это вручную или yq следующим образом (сделайте резервную копию ~/.kube/config перед редактированием):

➜ microk8s config | yq m -i -a append ~/.kube/config -

Это добавит конфигурацию microk8s, и единственными оставшимися задачами будет установка текущего контекста для кластера microk8s:

➜ kubectl config use-context microk8s

Вы можете подтвердить успешную настройку следующим образом:

➜ kubectl cluster-info
Kubernetes master is running at https://192.168.64.2:16443
CoreDNS is running at https://192.168.64.2:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.64.2:16443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

У вас все готово с Microk8s!

Установка Kubeflow

Установив MicroK8s, мы можем приступить к настройке Kubelflow. Дополнительные параметры, которые мы передаем, обходят минимальные 14 ГБ проверки памяти и выбирают облегченную версию Kubeflow, которая больше подходит для локальной установки.

➜ microk8s enable kubeflow:ignore_min_mem=true,bundle=lite
Enabling dns...
Enabling storage...
Enabling dashboard...
Enabling ingress...
Enabling metallb:10.64.140.43-10.64.140.49...
Waiting for DNS and storage plugins to finish setting up
...
...

Этот процесс займет некоторое время, так что пейте кофе :) Наконец, вы увидите такой результат:

Congratulations, Kubeflow is now available.
The dashboard is available at http://XX.XX.XXX.XX.xip.io
    Username: admin
    Password: XXXXXXXXXXXXXXX
To see these values again, run:
    microk8s juju config dex-auth static-username
    microk8s juju config dex-auth static-password

Оставьте IP, имя пользователя и пароль доступными на будущее.

И последнее, что нам нужно сделать, чтобы разрешить доступ к пользовательскому интерфейсу Kubeflow через этот внешний IP-адрес, - туннелировать внешний трафик в службу пользовательского интерфейса Kubeflow.
Во-первых, нам нужно запустить сеанс переадресации порта ssh на узел microk8s. Для этого нам нужно узнать IP-адрес этого узла и настроить к нему доступ по ключу. Начнем с IP-адреса

➜ multipass list
Name                    State             IPv4             Image
microk8s-vm             Running           192.168.64.2     Ubuntu 18.04 LTS

Большой! IP-адрес 192.168.64.2. Теперь займемся ключевым доступом. Во-первых, получите свой открытый ключ:

➜ cat ~/.ssh/id_rsa.pub | pbcopy

pbcopy помещает содержимое ключа в буфер обмена - он вам понадобится через секунду! Теперь используйте multipass, чтобы открыть оболочку в виртуальной машине и добавить содержимое ключа в конец файла authorized_key:

➜ multipass shell microk8s-vm
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-121-generic x86_64)
Last login: Mon Oct 26 20:37:35 2020 from 192.168.64.1
ubuntu@microk8s-vm:~$ vi ~/.ssh/authorized_keys

Теперь мы можем открыть сеанс переадресации портов:

➜ ssh -D9999 [email protected]
The authenticity of host '192.168.64.2 (192.168.64.2)' can't be established.
ECDSA key fingerprint is SHA256:lRysM9GCTgz25z2vKKE2IDVJALLIkvaTXqhHwkxpyFE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.64.2' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-121-generic x86_64)
Last login: Mon Oct 26 20:47:33 2020 from 192.168.64.1

Последний шаг, который нужно сделать, - включить прокси-сервер SOCKS в настройках macOS. Должно получиться так:

Теперь вы можете указать в браузере URL-адрес и учетные данные из предыдущего шага.

Поздравляю! Все готово!