takaya030の備忘録

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

Rails5.1 サーバーのソースコード変更後の自動リロードの設定

Ruby on Rails 5.1 の development モードでソースコード変更後、自動でサーバーに反映させる設定について

検証環境

Ruby on Rails 5.1.1

設定内容

config/environments/development.rb を以下のように変更後、rails server を再起動することでソースコードの変更が直ちにサーバーに反映されるようになる

--- config/environments/development.rb.orig     Tue Jul 04 19:45:02 2017
+++ config/environments/development.rb  Thu Jul 06 23:13:35 2017
@@ -50,5 +50,6 @@

   # Use an evented file watcher to asynchronously detect changes in source code,
   # routes, locales, etc. This feature depends on the listen gem.
-  config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+  #config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+  config.file_watcher = ActiveSupport::FileUpdateChecker
 end

Docker と Lumen を使って Google App Engine for PHP の開発環境を作る

はじめに

今まで GAE は Twitter Bot をいくつか動かす程度にしか使っていませんでしたが、こちらの記事を読んで感化され、本格的に使うために開発環境を構築してみました。
cloud-ja.googleblog.com

以前にも Docker で GAE for PHP の環境は作ったことはありましたが、改めて見るとイケてなかったので良い機会なので作り直しました。
takaya030.hatenablog.com


ポイントは以下の二点です。

  • GAE for PHP が対応している PHP の最新バージョンは 5.5.34 (2017年6月現在)
  • PHP の Memcache や Memcached 拡張がインストールされていると SDK のアプリがローカルで動作しないため、サーバーの PHP はソースビルドでインストールする

検証環境

Windows10 Home Edition
VirtualBox 5.1.22
Docker version 17.05.0-ce, build 89658be
docker-compose version 1.6.2, build 4d72027

ディレクトリ構成

+---gae
|   |   docker-compose.yml
|   |   
|   +---composer
|   |       Dockerfile
|   |       
|   +---config
|   |       
|   +---data
|   |       Dockerfile
|   |       
|   +---phpcli
|   |       Dockerfile
|   |       
|   +---sdk
|           Dockerfile
|            
+---logs
|    
+---www

各種設定ファイル

gae/docker-compose.yml

version: "2"
services:
  data:
    build: ./data
    volumes:
      - ../:/data
  composer:
    build: ./composer
    volumes_from:
      - data
  phpcli:
    build: ./phpcli
    volumes_from:
      - data
  sdk:
    build: ./sdk
    volumes:
      - ./config/:/home/docker/.config
    volumes_from:
      - data
    ports:
      - "8080:8080"
      - "8000:8000"

gae/composer/Dockerfile

FROM php:5.5.34
LABEL maintainer "takaya030"

WORKDIR /tmp

RUN apt-get update -y && \
	apt-get install -y git unzip sudo && \
	apt-get clean

# create docker user
RUN useradd -d /home/docker -m -s /bin/bash -u 1000 -g 50 docker

# install composer
RUN curl -sS https://getcomposer.org/installer | php && \
	mv composer.phar /usr/local/bin/composer && \
	composer self-update

ENV COMPOSER_HOME /home/docker/.composer
RUN sudo -u docker composer global require hirak/prestissimo

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

ENTRYPOINT ["composer"]
CMD ["--help"]

gae/data/Dockerfile

FROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data
VOLUME ["/data"]
CMD ["true"]

gae/phpcli/Dockerfile

主に artisan コマンドを実行するためのイメージです

FROM php:5.5.34
LABEL maintainer "takaya030"

RUN apt-get update && \
  apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev && \
  docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt && \
  apt-get clean

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

ENTRYPOINT ["php"]
CMD ["--version"]

gae/sdk/Dockerfile

FROM google/cloud-sdk:alpine
LABEL maintainer "takaya030"

# build PHP 5.5.34
RUN apk add --update --no-cache --virtual .persistent-deps \
		ca-certificates \
		curl \
		tar \
		libpng \
		libxml2 \
		sudo \
		xz
RUN apk add --no-cache --virtual .build-deps \
	autoconf \
	dpkg-dev dpkg \
	file \
	g++ \
	gcc \
	libc-dev \
	make \
	pcre-dev \
	pkgconf \
	re2c \
	coreutils \
	curl-dev \
	libedit-dev \
	libxml2-dev \
	libpng-dev \
	sqlite-dev \
	libressl \
	libressl-dev \
	zlib-dev \
  && curl -Lso php-5.5.34.tar.gz http://jp2.php.net/get/php-5.5.34.tar.gz/from/this/mirror && \
	tar xvzf php-5.5.34.tar.gz && \
	cd php-5.5.34 && \
	./configure --prefix=/usr/local/php-5.5.34/ \
    --enable-bcmath \
    --enable-calendar \
    --enable-ftp \
    --enable-mbstring \
    --enable-opcache \
    --enable-phar \
    --enable-soap \
    --enable-sockets \
    --enable-zip \
    --disable-fileinfo \
    --disable-flatfile \
    --disable-posix \
    --with-curl \
    --with-gd \
    --with-openssl \
    --without-sqlite3 \
    --without-pdo-sqlite \
    --without-imap \
    --without-kerberos \
    --without-imap-ssl \
    --without-interbase \
    --without-ldap \
    --without-mssql \
    --without-oci8 \
    --without-pgsql \
    --without-pear \
    --with-pdo-mysql=mysqlnd \
    --with-mysqli=mysqlnd \
    --with-mysql=mysqlnd \
	--with-config-file-path=/etc && \
	make && make install && \
	cp ./php.ini-production /etc/php.ini && \
	cd .. && \
	rm -r php-5.5.34 php-5.5.34.tar.gz \
  && apk del .build-deps

# modify /etc/php.ini
RUN sed -i -e "s/;date.timezone *=.*$/date.timezone = Asia\/Tokyo/" /etc/php.ini

# symbolic links
RUN ln -s /usr/local/php-5.5.34/bin/php /usr/local/bin/php && \
	ln -s /usr/local/php-5.5.34/bin/php-cgi /usr/local/bin/php-cgi && \
	ln -s /usr/local/php-5.5.34/bin/php-config /usr/local/bin/php-config && \
	ln -s /usr/local/php-5.5.34/bin/phpize /usr/local/bin/phpize

# install GAE for PHP SDK
RUN gcloud components install app-engine-php

# create docker user
RUN adduser -S -u 1000 -g 50 docker \
	&& echo 'docker:tcuser' | chpasswd

# for saving gcloud config
RUN sudo -u docker gcloud config set core/disable_usage_reporting true && \
    sudo -u docker gcloud config set component_manager/disable_update_check true && \
    sudo -u docker gcloud config set metrics/environment github_docker_image

RUN mkdir -p /data/www
VOLUME ["/data","/home/docker/.config"]
WORKDIR /data/www

USER 1000

CMD ["dev_appserver.py","--php_executable_path=/usr/local/bin/php-cgi","--host","0.0.0.0","--admin_host","0.0.0.0","./"]

イメージのビルド

gae ディレクトリに移動後、以下のコマンドでイメージをビルドします。

$ docker-compose build

Lumen のインストー

イメージビルド後、以下のコマンドで Lumen をインストールします。(www フォルダにインストールされます)
後述する GaeSupportLumen を使用する場合 Lumen 5.1 が必要なため下記の通り "v5.1.4" を指定します。

$ docker-compose run --rm composer create-project laravel/lumen . v5.1.4

GaeSupportLumen のインストー

Lumen インストール後、以下のコマンドで GaeSupportLumen をインストールします。

$ docker-compose run --rm composer require shpasser/gae-support-lumen:~1.0
$ docker-compose run --rm composer require illuminate/mail:~5.0

bootstrap/app.php を下記の通りに変更します。

--- bootstrap\app.php.orig   Mon Aug 03 21:56:04 2015
+++ bootstrap\app.php        Sat Jun 24 10:43:33 2017
@@ -19,7 +19,7 @@
     realpath(__DIR__.'/../')
 );

-// $app->withFacades();
+$app->withFacades();

 // $app->withEloquent();

@@ -80,6 +80,7 @@

 // $app->register(App\Providers\AppServiceProvider::class);
 // $app->register(App\Providers\EventServiceProvider::class);
+$app->register(Shpasser\GaeSupportLumen\GaeSupportServiceProvider::class);

 /*
 |--------------------------------------------------------------------------

以下のコマンドで GAE の各種設定を行います。

$ docker-compose run --rm phpcli artisan gae:setup --config my-gae-project

gcloud の初期設定

以下のコマンドで gcloud の初期設定を行います。この操作は一回実行するだけで OK です

$ docker-compose run --rm sdk gcloud config set core/disable_usage_reporting true
$ docker-compose run --rm sdk gcloud config set component_manager/disable_update_check tru
e
$ docker-compose run --rm sdk gcloud config set metrics/environment github_docker_image

gcloud info で設定内容が確認できます

$ docker-compose run --rm sdk gcloud info
Starting gae_data_1
Google Cloud SDK [162.0.0]

Platform: [Linux, x86_64] ('Linux', 'f857ebb6463e', '4.4.66-boot2docker', '#1 SMP Fri May 5 20:44:25 UTC 2017', 'x86_64', '')
Python Version: [2.7.13 (default, Dec 22 2016, 09:22:15)  [GCC 6.2.1 20160822]]
Python Location: [/usr/bin/python2]
Site Packages: [Disabled]

Installation Root: [/google-cloud-sdk]
Installed Components:
  gsutil: [4.27]
  core: [2017.07.07]
  app-engine-python: [1.9.57]
  gcloud: []
  bq: [2.0.24]
System PATH: [/google-cloud-sdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]
Python PATH: [/google-cloud-sdk/lib/third_party:/google-cloud-sdk/lib:/usr/lib/python27.zip:/usr/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload]
Cloud SDK on PATH: [True]
Kubectl on PATH: [False]

Installation Properties: [/google-cloud-sdk/properties]
User Config Directory: [/home/docker/.config/gcloud]
Active Configuration Name: [default]
Active Configuration Path: [/home/docker/.config/gcloud/configurations/config_default]

Account: [None]
Project: [None]

Current Properties:
  [metrics]
    environment: [github_docker_image]
  [core]
    disable_usage_reporting: [true]
  [component_manager]
    disable_update_check: [true]

Logs Directory: [/home/docker/.config/gcloud/logs]
Last Log File: [/home/docker/.config/gcloud/logs/2017.07.19/13.19.29.094936.log]

git: [git version 2.11.2]
ssh: [OpenSSH_7.4p1, LibreSSL 2.4.4]

動作確認

以下のコマンドで開発用サーバーが起動します。

$ docker-compose up -d

web ブラウザで http://192.168.99.100:8080 にアクセスして以下の画面が表示されれば成功です。
f:id:takaya030:20170624114005p:plain

http://192.168.99.100:8000 にアクセスすると管理ページが表示されます。
f:id:takaya030:20170624114032p:plain

更新履歴

  • (2017/07/19) gclod config のフォルダを volume 指定するように変更。gcloud の初期設定を追加
  • (2017/06/27) composer の hirak/prestissimo プラグインが機能していなかったのを修正

Docker で Amon2 の開発環境を構築

docker-compose を使った Amon2 の開発環境構築の手順メモ

検証環境

Windows10 Home Edition
VirtualBox 5.1.20
Docker version 17.05.0-ce, build 89658be
docker-compose version 1.6.2, build 4d72027

ディレクトリ構成

+---amon
|   |   docker-compose.yml
|   |   
|   +---data
|   |       Dockerfile
|   |       
|   +---perlcli
|           Dockerfile
|            
+---logs
|    
+---www
        cpanfile

各種設定ファイル

amon/docker-compose.yml

version: "2"
services:
  data:
    build: ./data
    volumes:
      - ../:/data
  perlcli:
    build: ./perlcli
    volumes_from:
      - data
  plack:
    image: amon_perlcli
    volumes_from:
      - data
    ports:
      - "3000:3000"
    command: ["carton","exec","--","plackup","-p","3000","-r","myapp/app.psgi"]
    depends_on:
      - perlcli

amon/data/Dockerfile

FROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data
VOLUME ["/data"]
CMD ["true"]

amon/perlcli/Dockerfile

FROM perl:5.24.1
LABEL maintainer "takaya030"

WORKDIR /tmp

RUN apt-get update -y && \
	apt-get clean && \
	rm -fr /var/lib/apt/lists/*

# install carton
RUN cpanm Carton

# create docker user
RUN useradd -d /home/docker -m -s /bin/bash -u 1000 -g 50 docker

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

CMD ["perl","-v"]

www/cpanfile

requires 'Plack', '1.0044';
requires 'Amon2', '6.13';
requires 'Amon2::Lite', '0.13';

イメージのビルド

amon ディレクトリに移動後、以下のコマンドでイメージをビルドします。

$ docker-compose build

Amon2 と Plack のインストー

イメージビルド後、以下のコマンドで Amon2 と Plack をインストールします。

$ docker-compose run --rm perlcli carton install

動作確認

以下のコマンドでサンプルアプリケーションを作成します。

$ docker-compose run --rm perlcli carton exec -- amon2-setup.pl --flavor=Lite myapp

以下のコマンドで plack サーバーが起動します。

$ docker-compose up -d

web ブラウザで http://192.168.99.100:3000 にアクセスして以下の画面が表示されれば成功です。
f:id:takaya030:20170618190751p:plain

Terraform で Amazon EC2 に CentOS7 のインスタンスを立てる

Terraform で EC2 に ssh でログイン可能な CentOS7.3 のインスタンスを立てたときの手順メモ

検証環境

Windows10 Home Edition
Terraform v0.9.6

インスタンス作成時の注意点

EC2 に立てた CentOSインスタンスssh でログインするには下記の 2 項目が設定されている必要があります

  1. ログイン認証で使用するキーペア(秘密鍵)
  2. SSHを許可したセキュリティグループ

Terraform のインストー

ダウンロード

こちらのサイトから zip ファイルをダウンロード。解凍した実行ファイルを PATH の通ったフォルダにコピー
www.terraform.io

terraform の動作確認

$ terraform version
Terraform v0.9.6

ディレクトリ構成

+---aws_terraform
        centos7.tf

設定ファイル

aws_terraform/centos7.tf

provider "aws" {
    access_key = "MY ACCESS_KEY"
    secret_key = "MY SECRET_KEY"
    region = "ap-northeast-1"
}

resource "aws_instance" "example" {
    ami = "ami-571e3c30"
    instance_type = "t2.micro"
    key_name = "MY KEY_PAIR"
    security_groups = ["${aws_security_group.centos7_test.name}"]
}

resource "aws_security_group" "centos7_test" {
    name = "centos7_test"
    description = "Used in the terraform"

    # SSH access from anywhere
    ingress {
        from_port = 22
        to_port = 22
        protocol = "tcp"
        cidr_blocks = ["0.0.0.0/0"]

    }

    egress {
        from_port = 0
        to_port = 0
        protocol = "-1"
        cidr_blocks = ["0.0.0.0/0"]
    }
}

最新の CentOS の AMI ID はこちらのサイトで確認できます

インスタンス作成

事前確認

$ cd aws_terraform
$ terraform plan

作成実行

$ terraform apply

インスタンスssh で接続

AWS コンソール "EC2"→"インスタンス"→"接続" からインスタンスの接続方法を確認
下記のコマンドでログイン(ユーザーIDは "centos" )

$ ssh -i my_key_pair.pem centos@ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com

インスタンス破棄

事前確認

$ terraform plan -destroy -out=.\terraform.tfplan

破棄実行

$ terraform apply .\terraform.tfplan

Docker で Mojolicious の開発環境を構築

docker-compose を使った Mojolicious の開発環境構築の手順メモ

検証環境

Windows10 Home Edition
VirtualBox 5.1.20
Docker version 17.05.0-ce, build 89658be
docker-compose version 1.6.2, build 4d72027

ディレクトリ構成

+---mojo
|   |   docker-compose.yml
|   |   
|   +---data
|   |       Dockerfile
|   |       
|   +---perlcli
|           Dockerfile
|            
+---logs
|    
+---www
        cpanfile

各種設定ファイル

mojo/docker-compose.yml

version: "2"
services:
  data:
    build: ./data
    volumes:
      - ../:/data
  perlcli:
    build: ./perlcli
    volumes_from:
      - data
  plack:
    image: mojo_perlcli
    volumes_from:
      - data
    ports:
      - "3000:3000"
    command: ["carton","exec","plackup","-p","3000","myapp.pl"]
    depends_on:
      - perlcli

mojo/data/Dockerfile

FROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data
VOLUME ["/data"]
CMD ["true"]

mojo/perlcli/Dockerfile

FROM perl:5.24.1
LABEL maintainer "takaya030"

WORKDIR /tmp

RUN apt-get update -y && \
	apt-get clean && \
	rm -fr /var/lib/apt/lists/*

# install carton
RUN cpanm Carton

# create docker user
RUN useradd -d /home/docker -m -s /bin/bash -u 1000 -g 50 docker

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

CMD ["perl","-v"]

www/cpanfile

requires 'Plack', '1.0044';
requires 'Mojolicious', '7.31';

イメージのビルド

mojo ディレクトリに移動後、以下のコマンドでイメージをビルドします。

$ docker-compose build

Mojolicious と Plack のインストー

イメージビルド後、以下のコマンドで Mojolicious と Plack をインストールします。

$ docker-compose run --rm perlcli carton install

動作確認

以下のコマンドでサンプルアプリケーションを作成します。

$ docker-compose run --rm perlcli carton exec -- mojo generate lite_app myapp.pl

以下のコマンドで plack サーバーが起動します。

$ docker-compose up -d

web ブラウザで http://192.168.99.100:3000 にアクセスして以下の画面が表示されれば成功です。
f:id:takaya030:20170530233327p:plain

Docker で nginx + php-fpm + Larvel5.4 の環境構築

こちらの記事を参考に Docker で Laravel5.4 の開発環境を構築したときの手順メモ
(フロントエンド関連ツールは省いています)
qiita.com

ディレクトリ構成

+---la54
|   |   docker-compose.yml
|   |   
|   +---composer
|   |       Dockerfile
|   |       
|   +---data
|   |       Dockerfile
|   |       
|   +---fpm
|   |       Dockerfile
|   |       
|   +---nginx
|   |       Dockerfile
|   |       server.conf
|   |       
|   +---phpcli
|           Dockerfile
|            
+---logs
|    
+---www

各種設定ファイル

la54/docker-compose.yml

version: "2"
services:
  data:
    build: ./data
    volumes:
      - ../:/data
  fpm:
    build: ./fpm
    volumes_from:
      - data
  nginx:
    build: ./nginx
    volumes_from:
      - data
    links:
      - fpm:fpm
    ports:
      - "80:80"
  composer:
    build: ./composer
    volumes_from:
      - data
  phpcli:
    build: ./phpcli
    volumes_from:
      - data

la54/composer/Dockerfile

FROM php:7.1.4-cli
LABEL maintainer "takaya030"

WORKDIR /tmp

RUN apt-get update -y && \
	apt-get install -y git unzip sudo && \
	apt-get clean

# create docker user
RUN useradd -d /home/docker -m -s /bin/bash -u 1000 -g 50 docker

# install composer
RUN curl -sS https://getcomposer.org/installer | php && \
	mv composer.phar /usr/local/bin/composer && \
	composer self-update

ENV COMPOSER_HOME /home/docker/.composer
RUN sudo -u docker composer global require hirak/prestissimo

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

ENTRYPOINT ["composer"]
CMD ["--help"]

la54/data/Dockerfile

FROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data
VOLUME ["/data"]
CMD ["true"]

la54/fpm/Dockerfile

FROM php:7.1.4-fpm
LABEL maintainer "takaya030"

RUN apt-get update && \
  apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev && \
  docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt && \
  apt-get clean

RUN mkdir -p /data
VOLUME ["/data"]

la54/nginx/Dockerfile

FROM nginx:latest
LABEL maintainer "takaya030"

ADD server.conf /etc/nginx/conf.d/server.conf

RUN mkdir -p /data
VOLUME ["/data"]

la54/nginx/server.conf

server {
    listen 80 default;
    server_name _;
    root /data/www/public;
    index index.php index.html index.htm;
    charset utf-8;

    access_log /data/logs/access_log;
    error_log /data/logs/error.log warn;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ ^/index.php$ {
        fastcgi_pass fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

la54/phpcli/Dockerfile

FROM php:7.1.4-cli
LABEL maintainer "takaya030"

RUN apt-get update && \
  apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev && \
  docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt && \
  apt-get clean

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

ENTRYPOINT ["php"]
CMD ["--version"]

使用方法

la54 ディレクトリに移動後、docker-compose を実行。

# nginx, php-fpm コンテナの起動
$ docker-compose up -d

# Laravel のインストール (最後のピリオドを忘れずに)
$ docker-compose run --rm composer create-project laravel/laravel .

# composer パッケージのアップデート
$ docker-compose run --rm composer update

# artisan コマンド
$ docker-compose run --rm phpcli artisan list

変更履歴

  • (2017/05/24) composer の実行ユーザーを docker に変更
  • (2017/06/27) composer の hirak/prestissimo プラグインが機能していなかったのを修正

minikube で Windows 上に Kubernetes 環境を構築する

minikube で Windows + VirtualBox に Kubernetes 環境をセットアップしたときの手順メモ

検証環境

Windows10 Home Edition
VirtualBox 5.1.20

minikube のダウンロード

下記のリンクから最新の Windows 用の exe (minikube-windows-amd64.exe) をダウンロードします。(2017年4月30日現在の最新バージョンは v0.18.0 です)

minikube のインストール

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

minikube の config 設定

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

C:\> minikube config set vm-driver virtualbox

kubectl の インストール

kubectl がインストールされていない場合、以下のメッセージが表示されます
メッセージに表示された URL から kubectl.exe をダウンロードしてパスの通ったフォルダに配置します

C:\> minikube config set vm-driver virtualbox
========================================
kubectl could not be found on your path.  kubectl is a requirement for using minikube
To install kubectl, please do the following:

download kubectl from:
https://storage.googleapis.com/kubernetes-release/release/v1.6.0/bin/windows/amd64/kubectl.exe
Add kubectl to your system PATH

To disable this message, run the following:

minikube config set WantKubectlDownloadMsg false
========================================
These changes will take effect upon a minikube delete and then a minikube start

kubectl.exe が使用可能なときは以下のように警告メッセージが表示されません

C:\>minikube config set vm-driver virtualbox
These changes will take effect upon a minikube delete and then a minikube start

Kubernates クラスタの作成

"minikube start" で Kubernetes クラスタを作成します。このコマンドは %USERPROFILE% と異なるドライブで実行した場合エラーになることがあります。

C:\>minikube start
Starting local Kubernetes cluster...
Starting VM...
Downloading Minikube ISO
 89.51 MB / 89.51 MB [=============================================] 100.00% 0s
SSH-ing files into VM...
Setting up certs...
Starting cluster components...
Connecting to cluster...
Setting up kubeconfig...
Kubectl is now configured to use the cluster.

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

C:\>kubectl version
Client Version: version.Info{Major:"1", takaya030:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:36:33Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", takaya030:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"dirty", BuildDate:"2017-04-07T20:46:46Z", GoVersion:"go1.7.3", Compiler:"gc", Platform:"linux/amd64"}

Kubernetes クラスタの停止

"minikube stop" で停止します

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