WSL2でminikube環境を構築して、メモリとCPUを適切にminikube clusterに割り当てるまで。

# 背景
Docker Desktopが商用利用では有償化しました。
そういうがめつい奴使いたくないので個人レベルではminikubeを使っていきたいと思います。
単なる思想の問題です。

そして、Windows上でPod作ろう　みたいに成ったときに
Windows上だとHyper-Vが使われますが、中々どうして使いづらい。

管理者権限が必ず必須だったり・・・
ツールのインストールが煩雑だったり・・・
そもそも、Podを建てようとしても建てられないみたいな話もあったり（これはググって出てきた情報なのであんまり信憑性はないけど）
フォルダ共有（Driver）が出来ないとか・・・

という背景があり、WSL2で動かせたらみんな幸せになると思った。

# 課題
とりあえずWSL2の上で動かすので、Google先生で

`WSL2 Windows minikube インストール`とかでググってもDocker Desktopで動かすやつしか出てこない。
なんということだ。

というわけで、WSL2にインストールするという目的は一旦忘れて、
素のUbuntuにインストールする方法で、WSL2上に存在するUbuntuにインストールできないか？
と思ったら出来たので備忘録として書いていきます。

# 改めて、WSL2上のubuntuにminikubeをインストールする方法
これをやっていくだけでできる。先人の知恵ですね。

https://qiita.com/yuichi1992_west/items/571016084c110d15320e

# minikubeクラスタの初期リソース割り当てがショボい
起動時のログ
```
😄  minikube v1.25.2 on Ubuntu 18.04
✨  Using the docker driver based on existing profile
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🤷  docker "minikube" container is missing, will recreate.
🔥  Creating docker container (CPUs=2, Memory=12800MB) ...
🐳  Preparing Kubernetes v1.23.3 on Docker 20.10.12 ...
    ▪ kubelet.housekeeping-interval=5m
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
```
メモリは良いとしよう。
CPU、お前はだめだ。
（もしメモリも少なければ、調整できます）

というわけで、最近のマシンは色々メモリを積んでたりコア数も多いのでじゃんじゃんリソースを使うようにしましょう。

# WSL2が使う大本のメモリとCPUのコア数を増やす
WSL2のデフォルトでは大した量を割り当てていないので、こっちから修正していきます。
WSL2全体設定（.wslconfig）とディストリに対する個別設定(wsl.conf)がありますが、今回は全体設定の方をいじります。
[Microsoft - WSL での詳細設定の構成](https://docs.microsoft.com/ja-jp/windows/wsl/wsl-config)

例に則り、書いてみる。
powershellで以下のコマンドを叩くと開くので・・・
```
code "$Env:userprofile\.wslconfig"
```

これを書く。

``` .wslconfig
[wsl2]
memory=16GB
processores=16
swap=0
```
WSL2に対して
　メモリ割り当て16GB（64GB積んでるのでそれの1/4）
　CPUコア数割り当て16（AMD Ryzen 7 1800Xの仮想コア数含めると16コアなので全部割り当てる）
　スワップメモリ割り当て（スワップメモリは割り当てたくないので0にしておく）

こんな感じです。
環境に応じてカッコの中が合わなくなってくるはずなので、自分の環境に合わせて変更してください。

では、WSL2の再起動をしていきます。

```
> wsl --shutdown
> wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定) <---これを使いたいので
Ubuntu-20.04

> wsl -t Ubuntu <---こうする。
```
というわけでWSL2の設定はできました。

# minikubeの割り当てを変更する
WSL2側のリソースを考えてみます
　CPUは全部使う（ずっとピークが続くわけでもないのでフルで使っても問題なし）
　メモリは少し余らせる（大体4GBあれば良さそう）
　　→ minikubeに割り当てるのは16GB中**12GB**

Ubuntuのコンソールに入って、以下のコマンドを叩いていきます
``` bash
minikube config set cpus 16
minikube config set memory 12GB
minikube config set vm-driver docker
minikube stop&& minikube delete&& minikube start
```
※ついでに、vm-driverも設定しました。

起動している所
```
✋  Stopping node "minikube"  ...
🛑  Powering off "minikube" via SSH ...
🛑  1 node stopped.
🔥  Deleting "minikube" in docker ...
🔥  Deleting container "minikube" ...
🔥  Removing /home/segfo/.minikube/machines/minikube ...
💀  Removed all traces of the "minikube" cluster.
😄  minikube v1.25.2 on Ubuntu 18.04
✨  Using the docker driver based on user configuration
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔥  Creating docker container (CPUs=16, Memory=12288MB) ...　<=== これ！
🐳  Preparing Kubernetes v1.23.3 on Docker 20.10.12 ...
    ▪ kubelet.housekeeping-interval=5m
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
```

これでめでたくリソースをフル活用できるminikube環境が構築できました。
おわり