Подготовка 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-адрес и учетные данные из предыдущего шага.
Поздравляю! Все готово!