MinikubeをWindows環境(Hyper-V)で動かす機会があったのでまとめておきます。
「k8s触ってみようかな…」という方のお役に立てば幸いです。
事前準備
- Windowsのライセンス確認
- Windows 10 Homeの場合はHyper-Vが使えないので、おとなしくVirtualBoxを使ってMinikubeを動かすか、Professionalにアップグレードしてください。
- BIOSの仮想化機能(VT-X/AMD-V)を有効化
- OSにHyper-Vをインストール
- Windowsの「Hyper-Vプラットフォーム」を有効化
既にDocker for Windowsを利用している環境なら、何かする必要はないと思います。
Hyper-Vの設定(外部ネットワーク用仮想スイッチの追加)
Hyper-V マネージャーを起動します。
- 「プログラム」>「Windows 管理ツール」>「Hyper-V マネージャー」
- もしくは「ファイル名を指定して実行」から
virtmgmt.msc
- もしくは「ファイル名を指定して実行」から
起動したら「仮想スイッチ マネージャー」を選択。
「新しい仮想ネットワーク スイッチ」→「外部」→「仮想スイッチの作成」として、外部ネットワーク用の仮想スイッチを追加します。
Docker for Windowsを利用している場合は「DockerNAT」という名前で既に仮想スイッチが登録されているため、同じような名前にしました。赤枠のチェックを忘れずに。
Minikubeのインストール
公式の手順の通りやっていけばOKです。Chocolateyも提供されていますが、ここでは基本的なやり方で。
以下のバイナリをダウンロードして、あとはPATHの通ったところに置くだけです。minikube-windows-amd64.exe
はminikube.exe
にリネームしておくと楽です。
今回はC:\minikube\
以下に配置し、システム環境変数からパスを通しました。
どちらもexeファイルを直接ダウンロードするため、Windowsのsmartscreenにひっかかって起動が失敗することがあります。exeファイルには、以下のようにチェックを入れておくと安心です。
動作確認
公式のQuickstartをやってみます。
コマンドプロンプトを管理者権限で起動し(参考記事)、仮想マシンドライバとして"hyperv"を指定して起動します。(無指定だとvirtualboxのドライバが利用されます)
c:\>minikube start --vm-driver="hyperv"
Starting local Kubernetes v1.6.4 cluster...
Starting VM...
Moving files into cluster...
Setting up certs...
Starting cluster components...
Connecting to cluster...
Setting up kubeconfig...
Kubectl is now configured to use the cluster.
Hyper-Vマネージャに「minikube」という名前で仮想マシンが追加されるのが確認できます。
クラスタが立ち上がっているのも確認しておきます。
c:\>kubectl config use-context minikube
Switched to context "minikube".
c:\>kubectl cluster-info
Kubernetes master is running at https://192.168.11.222:8443
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
ここまで確認できたら、あとはMiniqubeのQuickstartの通りやっていきましょう。
c:\>kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
deployment "hello-minikube" created
c:\>kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed
c:\>kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-minikube-938614450-jl8ht 1/1 Running 0 51s
c:\>minikube service hello-minikube --url
http://192.168.11.222:32455
表示されたURL( http://192.168.11.222:32455 )にアクセスして、以下のようなレスポンスが表示されればOKです。
CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://192.168.11.222:8080/
SERVER VALUES:
server_version=nginx: 1.10.0 - lua: 10001
HEADERS RECEIVED:
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
accept-encoding=gzip, deflate, sdch
accept-language=ja,en-US;q=0.8,en;q=0.6
connection=keep-alive
host=192.168.11.222:32455
referer=http://google.co.jp/
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
BODY:
-no body in request-
終了する場合は以下のような感じで。
// 仮想マシン停止
c:\>minikube stop
Stopping local Kubernetes cluster...
Machine stopped.
// 仮想マシン削除
c:\>minikube delete
Deleting local Kubernetes cluster...
Machine deleted.
お役に立てば幸いです。