Minikube導入とエラー対応

# 概要

* Macローカルにminikubeを導入する際エラーに遭遇する
* 解決したエラーと方法をメモしておく

# 詳細

## minikube導入

```
$ brew cask install virtualbox

$ brew install minikube
or
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.23.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

```

```
$ brew unlink minikube
Unlinking /usr/local/Cellar/minikube/1.18.1... 3 symlinks removed.
$ brew link minikube
Linking /usr/local/Cellar/minikube/1.18.1... 3 symlinks created.
```

```
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64

$ sudo install minikube-darwin-amd64 /usr/local/bin/minikube
$ ls -l /usr/local/bin/minikube
-rwxr-xr-x  1 root  admin  59174304 Mar  8 15:32 /usr/local/bin/minikube
```

## kubectl導入

* brewの場合

```
$ brew install kubectl

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.4", GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c", GitTreeState:"clean", BuildDate:"2021-02-21T20:23:45Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"darwin/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
```
* curlの場合

```
最新版
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"

バージョン指定
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/darwin/amd64/kubectl
```

* 実行権と＄PATH以下へ移動

```
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
```

* minikube起動

```
$ minikube start
$ kubectl get node
NAME       STATUS    ROLES     AGE       VERSION
minikube   Ready     <none>    6h        v1.8.0
```

# エラー参考集

## エラー参考：Startup with virtualbox driver failed

```
$ minikube start
E0308 16:27:22.254249   22591 cloud_events.go:60] unable to write to /Users/username/.minikube/profiles/minikube/events.json: open /Users/username/.minikube/profiles/minikube/events.json: permission denied
😄  minikube v1.18.1 on Darwin 11.1
✨  Automatically selected the virtualbox driver
👍  Starting control plane node minikube in cluster minikube
❗  Startup with virtualbox driver failed, trying with alternate driver ssh: Failed to save config: open /Users/username/.minikube/profiles/minikube/config.json: permission denied
❗  Failed to delete cluster minikube, proceeding with retry anyway.
❌  Exiting due to MK_USAGE: No IP address provided. Try specifying --ssh-ip-address, or see https://minikube.sigs.k8s.io/docs/drivers/ssh/
```

## エラー参考：Error starting host: Error creating host: Error executing step: Creating VM.

```
Error starting host: Error creating host: Error executing step: Creating VM.
: Error setting up host only network on machine start: The host-only adapter we just created is not visible. This is a well known VirtualBox bug. You might want to uninstall it and reinstall at least version 5.0.12 that is is supposed to fix this issue.
```

* ハイパーバイザ（VirtualBoxなど）が入ってない場合は以下のエラー
* もしくはVirtualBoxにエラーがある
* この場合VirtualBoxのバグでVM作成できないとのメッセージ
* ステーブルバージョンを入れ直す
* VirtualBoxのｄｍｇ内にアンインストールツールがある
* MacごとOS再起動する
* 起動できるようになる

#### 問題を取り除いた後再度起動

```
$ minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
：
Starting cluster components...
Kubectl is now configured to use the cluster.

$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100
```

## エラー参考：Error from server (NotAcceptable)

* minikube(kubernetes)本体とkubectlのバージョンが合っていない可能性がある
* 本体は変更は困難なケースが多い。kubectlを違うバージョンにしてみる事を推奨
* Kubectl 1.11はKubernetesのバージョンがv1.9以上必要。このケースではKubernetesがv1.8.0。
* kubectlを1.10に下げてみる

```
$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.99.103:8443

$ kubectl get node
Error from server (NotAcceptable): the server was unable to respond with a content type that the client supports (get nodes)
```

```
$ minikube version
minikube version: v0.23.0
```

## エラー参考 kubectl: cannot execute binary file

* kubectlが実行できない場合
* MacでLinuxのバイナリをダウンロードしてきた等の可能性がある
* ダウンロードをし直してみる


```
誤
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl

正
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/darwin/amd64/kubectl

MacにLinuxのkubectlを導入した場合
$ /usr/local/bin/kubectl
/usr/local/bin/kubectl: /usr/local/bin/kubectl: cannot execute binary file

その他に32bit用と64bit用を間違えるなど
```

* 正しいバイナリを再配置

```
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
```

## 参考リンク

https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/
https://kubernetes.io/ja/docs/setup/learning-environment/minikube/
https://kubernetes.io/ja/docs/tutorials/hello-minikube/
https://github.com/kubernetes/kubernetes/issues/65575#issuecomment-401319830