takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

minikube で Windows 上に Kubernetes 環境を作る

minikube で Web アプリケーションの開発環境を作成する手順メモ 今回はフレームワークをインストールする前段階まで

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
minikube version: v0.30.0
kubectl v0.12.0

minikube と kubectl のインストール

minikube のダウンロード

下記のリンクから最新の Windows 用の exe minikube-windows-amd64 をダウンロードします。(2018年10月27日現在の最新バージョンは v0.30.0 です) https://github.com/kubernetes/minikube/releases

minikube のインストール

ダウンロードしたファイルは minikube.exe とリネームしてパスの通ったフォルダにコピーします。

minikube の config 設定

デフォルトの vm driver を VirtualBox にするため、コマンドプロンプトで以下のコマンドを入力

C:\>minikube config set vm-driver virtualbox

設定内容の確認

C:\>minikube config view
- vm-driver: virtualbox

kubectl のインストール

下記 URL から kubectl.exe をダウンロードしてパスの通ったフォルダに配置します https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/windows/amd64/kubectl.exe

Kubernetes クラスタの作成

minikube startKubernetes クラスタを作成します。このコマンドは %USERPROFILE% と同じドライブ(大抵 C ドライブ)で実行しないとエラーになります。
デフォルトでは --memory 2048 --disk-size 20g と開発環境としてはサイズが小さいのでそれぞれ倍にしました

C:\>minikube start --memory 4096 --disk-size 40g

コマンド入力後、数分待つとクラスタが作成されます

Kubernetes クラスタの確認

kubectl version で以下のようにサーバーバージョンが取得できた場合、Kubernetes クラスタが正常に作成されています

C:\>kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-27T17:05:32Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

minikube ipクラスタの IP アドレスが確認できます

C:\>minikube ip
192.168.99.100

minikube sshクラスタにログインできます

C:\>minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

クラスタ内でも docker コマンドが使用可能です

$ docker -v
Docker version 17.12.1-ce, build 7390fc6

$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/coredns                         1.2.2               367cdc8433a4        8 weeks ago         39.2MB
k8s.gcr.io/kubernetes-dashboard-amd64      v1.10.0             0dab2435c100        2 months ago        122MB
k8s.gcr.io/kube-proxy-amd64                v1.10.0             bfc21aadc7d3        7 months ago        97MB
k8s.gcr.io/kube-apiserver-amd64            v1.10.0             af20925d51a3        7 months ago        225MB
k8s.gcr.io/kube-scheduler-amd64            v1.10.0             704ba848e69a        7 months ago        50.4MB
k8s.gcr.io/kube-controller-manager-amd64   v1.10.0             ad86dbed1555        7 months ago        148MB
k8s.gcr.io/etcd-amd64                      3.1.12              52920ad46f5b        7 months ago        193MB
k8s.gcr.io/kube-addon-manager              v8.6                9c16409588eb        8 months ago        78.4MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64     1.14.8              c2ce1ffb51ed        9 months ago        41MB
k8s.gcr.io/k8s-dns-sidecar-amd64           1.14.8              6f7f2dc7fab5        9 months ago        42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64          1.14.8              80cc5ea4b547        9 months ago        50.5MB
k8s.gcr.io/pause-amd64                     3.1                 da86e6ba6ca1        10 months ago       742kB
gcr.io/k8s-minikube/storage-provisioner    v1.8.1              4689081edb10        11 months ago       80.8MB

デフォルトで VirtualBox の共有フォルダ機能で C:\Users 以下が /c/Users にマウントされています

$ ls -la /c/Users
ls: cannot read symbolic link '/c/Users/All Users': Protocol error
total 61
dr-xr-xr-x 1 docker docker  4096 May 31 14:01  .
drwxr-xr-x 3 root   root       0 Oct 27 03:08  ..
lrwxrwxrwx 1 docker docker     0 Apr 11  2018 'All Users'
dr-xr-xr-x 1 docker docker  8192 May 31 14:06  Default
dr-xr-xr-x 1 docker docker  8192 May 31 14:06 'Default User'
drwxrwxrwx 1 docker docker     0 Oct  2  2016  Default.migrated
drwxrwxrwx 1 docker docker  8192 May 31 14:10  DefaultAppPool
drwxrwxrwx 1 docker docker 28672 Oct 26 14:57  takaya030
dr-xr-xr-x 1 docker docker  4096 May 31 13:52  Public
-rwxrwxrwx 1 docker docker   174 Apr 11  2018  desktop.ini

minikube ssh でログインした場合 exit でログアウトします

$ exit
logout

C:\>

Kubernetes クラスタの停止

minikube stop で停止します

C:\>minikube stop
Stopping local Kubernetes cluster...
Machine stopped.

最後に

minikube で作成したクラスタdocker-machine create で作成した Docker ホストVM と同じ感覚で使えそうです
次回はクラスタ上で Laravel を動かしてみます

参考サイト

qiita.com blog.1q77.com github.com