Kubeflow 0.7 を MicroK8s(Kubernetes v1.15.7)にインストールする

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

# 0. はじめに

以前、以下のような記事を書きました。
Kubeflow 0.5.1をMicroK8S(Kubernetes v1.14.6)で動かす - Qiita
https://qiita.com/ynott/items/b250373e39938b1d4e7a

Kubeflow 0.7がインストール出来たので備忘録です。
Kubeflow 0.6をインストールしたい方は、以下をご覧下さい。

Kubeflow が MicroK8s の Addon になってた - kondoumh のブログ
https://blog.kondoumh.com/entry/2019/12/15/152805

## 0-1. 注意

Kubeflow 0.7 は、Kubernetes v1.17.0にはまだインストールできません(2020/01/09)。
正確には、一見インストール出来ているように見えますが、seldon-core-operatorが上手く動かずインストールを完了できません。
Kubernetes v1.15系をご利用ください。

Issueは以下
Numerous kubeflow manifests can't deploy on Kubernetes 1.16 · Issue #375 · kubeflow/manifests
https://github.com/kubeflow/manifests/issues/375

# 1. Ubuntu 18.04 LTSをインストール

普通にUbuntu 18.04 LTSをインストールしてください。

# 2. CUDAをインストール

何も考えずに、以下のURLで出てきた
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocal
Base Installerを実行してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/f805a74f-838e-8be4-15c6-f17107d50d53.png)

注：CUDA以外にnVidiaのドライバーも同時に入りますので事前にドライバーをインストールする必要はありません。

# 2. MicroK8s(Kubernetes v1.15.7)をインストール

```
sudo apt install -y snap
sudo snap install microk8s --channel=v1.15/stable --classic 
sudo snap alias microk8s.kubectl kubectl
sudo snap alias microk8s.helm helm
sudo usermod -a -G microk8s $USER
```

# 3. 【寄り道】Rancherをインストール

グラフィカルにKubernetesの中を覗きたいならRancherを以下でインストールしてください。
Kubernetes 1.15.7でも動かし方は同じです。

RancherをMicroK8s(Kubernetes 1.17.0)で動かす - Qiita
https://qiita.com/ynott/items/ef4d9956dff163b9fbc7

## 3-1. cattle-cluster-agentがCrashLoopになった場合

IPアドレスが引けてないので、corednsのconfigMapを修正してHostに書いてください。

Kubernetesのクラスターを選択して、プロジェクトでSystemを選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/dc5a8cba-2c55-e51f-730a-18ac9af63212.png)
から`coredns`の行で、「編集」を選択して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/ee32b6f3-f826-16c7-6fd3-39188d313213.png)
以下の赤枠を追記します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/26e088a3-e752-e2c8-5d92-26ddffdcaa08.png)

反映には最大5分程度かかります

# 4. Kubeflow 0.7をインストール

```
sudo apt  install gawk
wget https://gist.githubusercontent.com/fdasilva59/f3a84afa93bb4fe394833120afff5a53/raw/dded159208c99638c41bcf966441b678c2563407/setup-kubeflow-microk8s.sh
bash ./setup-kubeflow-microk8s.sh
```

`awkが入っていないとsetup-kubeflow-microk8s.shがエラーになるので、忘れずにインストールしてください。`

# 5. setup-kubeflow-microk8s.shの動作に失敗した場合

`kubectl get pv`
してpvが残っている場合は、以下で削除

```
kubectl delete pv pv-volume1 
kubectl delete pv pv-volume2
kubectl delete pv pv-volume3
kubectl delete pv pv-volume4
```

ディレクトリが残っている場合は、以下で削除

```
sudo rm -rf /opt/local/k8s/pv/pv*
```

kubeflowが残っているというエラーが出たら以下で削除

```
sudo rm -rf /opt/local/k8s/install/kubeflow/
```

# 6. 参照

microk8sでGPUコンテナーを使う環境を整える - 仮想化通信
https://tech.virtualtech.jp/entry/2019/10/02/161200

Kubeflow が MicroK8s の Addon になってた - kondoumh のブログ
https://blog.kondoumh.com/entry/2019/12/15/152805

Shell script to install MicroK8S and Kubeflow (v0.7 by default) on an Ubuntu single node workstation. (Script is self-documented)
https://gist.github.com/fdasilva59/f3a84afa93bb4fe394833120afff5a53