BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

minikube で Kubernetes 環境構築 ( Hyper-V on Windows 10 )

Windows 10 に minikube の環境構築してみよう in April 2018 のコーナーです。

前提

  • Hyper-V on Win 10 でやりますので、Hyper-V を有効にしましょう。

    Windows 10 での Hyper-V の有効化 | Microsoft Docs

    (Win 10 Homeじゃ利用できない...Virtual Box でやるってのもある?けどここではやりません)

  • Chocolatey を使わずセットアップします。
    Chocolatey 使うと choco install minikube からの choco install kubernetes-cli で必要なインストールが終わっちゃいますがね、特に理由はないですよ。

  • シェルは PowerShell でもコマンドプロンプトでも大丈夫ですが、管理者権限で実行しときましょう。 色々試してた都合で画面キャプチャーでどっちも登場しますが深い意味はないです。

環境

  • Windows 10 Pro (1709 - 16299.371)
  • minikube (v0.25.2)
  • kubectl (v1.10.0)

では開始♪

仮想スイッチの準備

Windows のメニューで「hyper」くらいを入力すると「Hyper-V マネージャー」が表示されますでしょうかね。起動しましょう。

f:id:beachside:20180411203554p:plain


Hyper-V マネージャーの左の方にある「仮想スイッチマネージャー」をクリックします。

f:id:beachside:20180411203612p:plain


仮想スイッチの種類は 外部 を選択した状態で、「仮想スイッチの作成」をクリックします。

f:id:beachside:20180411203621p:plain


名前を適当に入力し(ここ本家のドキュメントにそって「Primary Virtual Switch」としました、後でこの名称使います)、

  • 「外部ネットワーク」にチェックオン
  • 「管理オペレーティングシステムに...」にもチェックオン

で「OK」をクリックして作成します。

f:id:beachside:20180411203630p:plain


minikube のセットアップ

Releases · kubernetes/minikube · GitHub から最新のWindows用のバイナリ(minikube-windows-amd64)をダウンロードしましょう.....

って話なんですが、これを書いてる時点の最新 v0.26.0 を使っても私の検証環境2台とも動かなかった 。 コマンド minikube version くらいはできるけど、minikube start .... すると 「Hyper-V PowerShell Module is not available」で死亡。GitHub の Issues で類似のがあるので色々試したけどダメでめんどくさくなったので ひとつ前のバージョン:v0.25.2 にしたら普通に動きました

ということで、今回は、v0.25.2 を使います。

f:id:beachside:20180411203640p:plain


ダウンロードしたら、ファイル名を 「minikube.exe」に変更します。 このexeを minikube ってコマンドとして呼び出すためですね。そしてコマンドとして呼び出すのには、PATHを通しておいた楽ですね。

といことで、まず 「minikube.exe」を適当なフォルダに置きましょう。今回はminikube.exeを「C:\tools\minikube\」におきました。そして、環境変数のPATHを設定しました。(不明な場合は..ググればすぐ見つかるでしょう♪)。

コマンドプロンプトを開いて、minikube version とたたいてみましょう。問題なければバージョンが表示されます。

f:id:beachside:20180411203649p:plain


kubectl のセットアップ

Kubernetes clusters を操作するための CLI である kubectl をセットアップしましょう。

公式サイトのこちらにあるようにインストールすればOKです。インストール方法はいくつかありますが、binary を直接ダウンロードするのが手っ取り早いでしょうか。"Before you begin" > "Install kubectl binary via curl" > Windows タブ で "this link" をクリックしてダウンロードしましょう。

f:id:beachside:20180411203710p:plain


ダウンロードした「kubectl.exe」を、今回は「C:\tools\kubectl」というフォルダを作って置き、先ほど同様にこのフォルダを環境変数のPATHに設定します。

コマンドプロンプトを開いて、kubectl version とたたいてみましょう。問題なければバージョンが表示されます。

f:id:beachside:20180411203721p:plain

minikube VM の起動

`minikube start のコマンドオプションは、minikube start --help とコマンドをたたくと見れます。そのうち今回は以下を使います。

  • --vm-driver: Hyper-V使ってるので、hyperv を指定
  • --hyperv-virtual-switch: 仮想スイッチには先ほど作った「Primary Virtual Switch」を指定
  • --alsologtostderr: ログをファイル出力する代わりに(コンソールに)表示
  • --v: ログの出力レベルを設定。設定レベルはこちら

以下のコマンドをたたいて minikube VM を起動してみましょう。

minikube start --vm-driver=hyperv --hyperv-virtual-switch="Primary Virtual Switch" --alsologtostderr --v=3

無事に動いたら、ついでに minikube status とたたいて状態を確認できます。

f:id:beachside:20180411203518p:plain

minikube VM のメモリ設定

こちらのドキュメントの HyperV driver の部分に「動的メモリを有効にしてると死ぬかもね」(雑な意訳)と書いてあるので、Offにします。 (GitHub の Issues だとこれですかね。)

メモリの設定変更は仮想マシンが停止状態じゃないとできないので、

minikube stop で止めましょう。

f:id:beachside:20180411203510p:plain


Hyper-V マネージャーで、状態がオフになっている(はずの)仮想マシン「minikube」を選択し、右ペインにある「設定」を開きます。

f:id:beachside:20180411203449p:plain


「動的メモリを有効にする」のチェックをオフにしましょう。静的なメモリ割り当ては必要に応じて適当にやります(今回はちょっとためすだけなので2Gでいいか...)。

f:id:beachside:20180411203440p:plain


設定完了なので、また先ほどと同じstartのコマンド

minikube start --vm-driver=hyperv --hyperv-virtual-switch="Primary Virtual Switch" --alsologtostderr --v=3

をたたいて正常に起動することを確認します。

次回は公式ドキュメントの動作確認をしようと思います。

動作がおかしいと思ったら

minikube の start でハングするようなら、%LOCALAPPDATA%\Temp にログが出ているはずなので見るといいでしょう。

で、ファーなってどうにもならんかったら、

  • %USERPROFILE% フォルダにある .minikube を削除
  • Hyper-V マネージャーで仮想マシン「minikube」を削除

してやり直すってのはいいかもしれません。

あとは、GitHub の Open の issues 結構あるので見てもよいかも。

Issues · kubernetes/minikube · GitHub

今回は、環境構築でドタバタしたから2台のPCでセットアップしたけど、同じ設定しても1台だけ動かないとか色々あってイラつきながらやってました....最終的には2台とも無事に動いてますが....。

参考

GitHub - kubernetes/minikube: Run Kubernetes locally

Setting up Kubernetes on Windows10 Laptop with Minikube | Microsoft Docs