できるだけ簡単にKubernetesする（Windows10）Part1


私がKubernetes使い始めたころ、
・いろいろ覚えることありすぎて大変だなぁ
・なんかもっと簡単にできたらいいんだけど…

と、感じることが多かったので、
そんな自分みたいな人がいたのなら役に立つかも、と思いまして、
できるだけ簡単にKubernetesを使えるところを目的として、書いてみようと思います。


## はじめに
なぜ、Kubernetesを使うべきなのか、などは書きません。

Kubernetes関連の記事はたくさん良いものがあります。
ただ、ボリュームが多すぎて、「使うの躊躇するんだよな」という方に向けて、
「これならやってみようか」と思えるよう書けたら嬉しいです。

なので、もうすでにKubernetes使ってるよ、という方には目新しい情報はない記事です。
せっかく開いていただいたのに、すみません。


## 環境は？
Windows 10 pro で Docker Desktop を使い、進めていきます。


私、仕事では、AWSのEKSを使っているのですが、
いきなりEKSで、説明すると、
・AWS使ってないよ
・お金かかるじゃん（2020年1月ごろ、EKSクラスターが、いきなり半額になりました）
・Kubernetesって言ってたのに、結局、他のものも勉強しなきゃいけない

などにより、このページを閉じたくなると思いますので、
現段階では、クラウドを避けて、今お使いいただいているPCで作成可能な
ローカルKubernetesでいってみます。


## Dockerは勉強しなくていいの？

Docker Desktop を使うくらいだから、
前提知識として Docker を使えるのが、当然な感じしそうですが、
まったく使えなくても大丈夫です。

Docker を知ってるに越したことはないのですが、
yamlファイルなど、書き方が異なる部分もありますので、
必要な時に取り上げるとして、現時点で勉強する必要はないです。

kubernetesを使うと決めている時点で、
「dockerって何？」
「コンテナって、初めて聞いたんだけど……」
って、ことはないと思いますが、
「いまいちよくわからないんだよな」という人はそのままで大丈夫です。


##Docker Desktop インストール

まずは、「Docker Desktop」のインストールです。
ブラウザで「Docker Desktop」と検索すると、
[Docker Desktop](https://www.docker.com/products/docker-desktop) のページが検索結果に出てきますので、
そちらへ行き、中央の Download for Windows (stable) でダウンロードしましょう。

![docker.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645440/4e741a5c-1682-b210-75af-00ea6fc76db4.jpeg)


ダウンロードしたものをダブルクリックで実行すると、
ユーザーアカウント制御の画面が出てきますので、
「はい」を押して許可します。

少し待っていただくと、Docker Desktop の設定項目が少し出てきます。

![install.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645440/ae29e443-f957-b5f6-73fe-d58142e8553d.jpeg)


Docker Desktop は Hyper-V を使いますので、上の
Enable Hyper-V Windows Features は、チェックを入れておいてください。

下は、ショートカットの作成なので、お好みで構いません。
「OK」を押し、インストールされるのをしばらく待ちましょう。

「Installation succeeded」が出ればOKですので、
「Close and restart」を押し、再起動してください。

Close and restart は、Docker Desktop が再起動するのではなく、
Windowsが再起動しますので、ご注意ください。

![close.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645440/d19d2f6b-cb3c-55a9-e266-b4cb81209ddb.jpeg)



再起動後、Docker Desktop が使えるようになっていますので、
Docker Desktop を起動してみましょう。

すると、チュートリアルの画面が出てきます。
いろいろと説明してくれるようですが、
今回はチュートリアルを無視して、赤枠で囲った歯車マークを押しましょう。

![tutorial.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645440/6ea5fe01-fa82-f4bb-92d5-2c8f4ef81d4f.jpeg)



すると、Docker Desktop の設定画面に移ります。

「General」の「Start Docker Desktop when you login」
にチェックを入れておくと、
Windows起動時に、Docker Desktop も起動してくれるので、
毎日使うのであれば、チェックしておいた方が楽です。


重要なのは、一番下の「Kubernetes」項目です。

「Kubernetes」の「Enable Kubernetes」にチェックを入れましょう。


![enable.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645440/4c86e06e-9b12-5d69-13a5-a150d602b7dd.jpeg)


残りの項目は、必要が出てきたら設定すれば問題ありませんので、
無視して「Apply & Restart」を押します。

このRestartは、Windowsでなく、
Docker Desktop なので、安心です。

結構、時間がかかりますが、下記画像のように、
Kubernetes 部分が緑丸で、running になりましたらOKです。

![kubernetes.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645440/0e76a326-4382-5a1b-a359-444a7dc80509.jpeg)


##Kubernetes確認
では、ためしにコマンドプロンプトでも起動して、
「kubectl version」
で、バージョンを確かめてみましょう。

```
C:\Users\test>kubectl version
Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:18:29Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
```
Client Version と Server Version が表示されているので、問題なさそうです。


では次に、現在何か動いているものがあるか確かめてみましょうか。
「kubectl get all」コマンドで確認できます。

```
C:\Users\test>kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   2d2h
```

何か1つあるようですね。

こちらはおいおい見ていくとして、
おめでとうございます。
これでKubernetesが使えるようになりました。


とはいえ、やりたいことはここではないと思いますので、
次回、使い方を書いていきます。

##まとめ
今回は、ただKubernetesを使えるようにしただけなので、なんてことなかったと思いますが、
私、最初はここまで来るのも結構苦労してた記憶があります。

[次回](https://qiita.com/kumato/items/a07e0033b6b09846d45c)は、実際にKubernetesを使っていく予定です。

以下は、今回で詰まりそうな部分を書いておきました。
順調にここまで進んだ方は、読まなくて大丈夫です。



## トラブルシューティング

### Hyper-Vが使えない

コマンドプロンプトを**管理者権限で**起動し、以下のコマンドをうってください。
bcdedit /enum | find "hypervisorlaunchtype"

```
C:\WINDOWS\system32>bcdedit /enum | find "hypervisorlaunchtype"
hypervisorlaunchtype    Auto
```

Hyper-VがONの時は、hypervisorlaunchtype が Auto になっているはずです、
もし、hypervisorlaunchtype が Off になっていましたら、以下のコマンドをうってください。
bcdedit /set hypervisorlaunchtype auto

```
C:\WINDOWS\system32>bcdedit /set hypervisorlaunchtype auto
この操作を正しく終了しました。
```

再度確認すると、Autoになっているはずです。

```
C:\WINDOWS\system32>bcdedit /enum | find "hypervisorlaunchtype"
hypervisorlaunchtype    Auto
```
Autoになっていることを確認しましたら、**Windowsを再起動**してください。
再起動後、Hyper-Vが使えるはずです。