Multipass MicroK8sでMacにKubeflow環境構築

4 min read読了の目安(約4000字 2

概要

家で桃鉄しながら気付きましたが
せっかくAI関係の会社に入ったのに、ここ1年ひたすらアプリ開発しかしてなくて
AI的な知見全然高まってない😫
ので、年末年始は好きなこと勉強することにした

GDBTやDeep Learning周りで遊んでみたいので
とりあえず、昔ちょこっと触ったKubeflowでローカル環境を作り直す

ローカル環境構築

なんか昔V1.0くらい触ってみたときは
MiniKFとかいうVagrantmとVirtualBox使った重めの物しかなかったですが

https://note.com/ucwork/n/n296f46a984c9

なんか久しぶりにドキュメント(v1.2)みたら選択肢めっちゃ増えとる👶

https://www.kubeflow.org/docs/started/workstation/getting-started-macos/

とりあえずMinikubeでいっとくか・・・
となりそうですが、いつもk8s周りで強い記事書かれてるこの方が
multipassに乗り換え記事書いてたんで自分も試しにこっちでいってみる

https://qiita.com/mumoshu/items/6ff56badcfabe5ab1f49

MacOS用のmultipassをインストールする

ここでダウンロードしてクリック&インストール

https://multipass.run/#install

ubuntu作成でけた

$ multipass launch --name ubuntu-lts
$
$ multipass exec ubuntu-lts -- lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal
$
$ multipass list
Name                    State             IPv4             Image
ubuntu-lts              Running           192.168.64.9     Ubuntu 20.04 LTS

とりあえず作った物消しちゃう

$ multipass stop ubuntu-lts
$ multipass delete ubuntu-lts
$ multipass purge

Kubernetes環境の作成

multipassで作成したubuntuにmicrok8sをインストールして
kubernetes環境を作成

$ multipass launch --name kubeflow --mem 16G --disk 50G --cpus 4
$ multipass shell kubeflow
ubuntu@kubeflow:~$ 
ubuntu@kubeflow:~$ sudo snap install microk8s --classic
sudo snap install microk8s --classic --channel=latest/edge
microk8s (1.20/stable) v1.20.0 from Canonical✓ installed
ubuntu@kubeflow:~$
ubuntu@kubeflow:~$ sudo microk8s status --wait-ready
microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
ubuntu@kubeflow:~$
ubuntu@kubeflow:~$ sudo usermod -a -G microk8s $USER
ubuntu@kubeflow:~$ sudo chown -f -R $USER ~/.kube

Kubeflow環境を作成

上のステップで作成したユーザー・グループを有効にするために
ubuntuのinstanceから一旦抜けて再度入り直して以下実施

$ multipass shell kubeflow
ubuntu@kubeflow:~$ 
ubuntu@kubeflow:~$ microk8s.enable dns dashboard storage
...
Storage will be available soon
ubuntu@kubeflow:~$
ubuntu@kubeflow:~$ microk8s.enable kubeflow
Password [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]:
...
Waited 405s for operator pods to come up, 1 remaining.
Operator pods ready.
Waiting for service pods to become ready.
Congratulations, Kubeflow is now available.

The dashboard is available at http://10.64.140.43.xip.io
...

Congratulations, Kubeflow is now available.

microk8sのkubeflow有効にするあたりがめちゃ時間かかりましたが
上のコメントが出たのでとりあえず成功みたい

Kubeflow Dashboardアクセスのための下準備

hostsに追加設定し
macからどのポートでアクセスしても行けるようにiptable設定
(この辺ドキュメントに載ってないこといくつかあるので詰まる人多いんじゃなかろうか

$ multipass shell kubeflow
ubuntu@kubeflow:~$ 
ubuntu@kubeflow:~$ sudo -- sh -c "echo '10.64.140.43\t10.64.140.43.xip.io' >> /etc/hosts"
ubuntu@kubeflow:~$ 
ubuntu@kubeflow:~$ sudo iptables -P FORWARD ACCEPT

公式によると、こんな感じでmacのネットワーク設定からSOCKS Proxyしろとあるが
システム環境設定->ネットワーク->詳細->プロキシ->SOCKSプロキシ(チェック)->SOCKSプロキシサーバ(127.0.0.1:9999)

これセットするとChromeで普通のネット検索ができない場面があったりで辛かったので
Firefoxブラウザでのみセットする

そして、Proxy sessionを作る

$ multipass list
Name                    State             IPv4             Image
kubeflow                Running           192.168.64.10    Ubuntu 20.04 LTS
$
$ sudo ssh -i /var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa -D9999 ubuntu@192.168.64.10
Last login: Thu Dec 31 14:43:41 2020 from 192.168.64.1
ubuntu@kubeflow:~$

KubeflowのDashboardにアクセスしてみる

あとはFirefoxで以下の通りアクセスするとログイン画面が見れるはず
http://10.64.140.43.xip.io

microk8s.enable kubeflow完了後に表示されたUsername, Passwordを入力するとDashboard画面が見えるはず!!

問題

うまくいったはずがNotebook Serversが表示されない😫
こいつがあるとJupyter notebook作成したりできるんですが・・・

あと、Artifact Storeでsorry hogehoge とか出てる・・・
半日以上悩んでいろいろ試みたけどわからん。

のでとりあえずissueに放り投げておいた

https://github.com/juju-solutions/bundle-kubeflow/issues/282

まとめ

AIで遊びたいのにまた関係ないところで長いことつまずいたw

もうローカル環境の遊び場こねくり回すのはいったんやめて
GCPにKubeflow環境作ることにした🌝

issueのお返事がきたらローカル構築再開してみよう👶