Minikubeを使ってローカル環境にKubernetes環境を用意する
コンニチハ、千葉です。
EKSがプレビュー中です。EKSがGAになる前に、Kubernetesを勉強するため、Minikubeを利用してMac上にKubernetes環境を用意しました。MinikubeはMac以外にも、Linux、Windowsにも対応しています。
Minikubeとは?
Minikubeはローカルで簡単にKubernetesを実行できるツールです。Kubernetesの検証や開発者のために、ノートPC上のVM環境でシングルノードのKubernetesクラスタを実行します。注意事項としては、シングルノードの環境になるので検証できない機能もあります。その場合は適宜クラウド環境に複数ノードでクラスを用意しましょう。 名前的に、小さいKubernetesでミニKubernetesからMinikube?
インストール
インストールの前提があります。 ハイパーバイザーが必要になります。Macの場合は、Hyperkit、xhyve、VirtualBox、VMware Fusionいずれかに対応しています。今回は、VirtualBoxで試してます。事前に任意のハイパーバイザーをインストールしておきましょう。
任意のハイパーバイザーをインストールしたらMinikubeをインストールします。brewを使います。
1 | $ brew cask install minikube |
インストールできたら早速起動してみましょう。--vm-driver=
で、ハイパーバイザーを指定できます。
1 2 3 4 | $ minikube --vm-driver=virtualbox start $ kubectl version Client Version: version.Info{Major: "1" , Minor: "10" , GitVersion: "v1.10.0" , GitCommit: "fc32d2f3698e36b93322a3465f63a14e9f0eaead" , GitTreeState: "clean" , BuildDate: "2018-03-27T00:13:02Z" , GoVersion: "go1.9.4" , Compiler: "gc" , Platform: "darwin/amd64" } Server Version: version.Info{Major: "" , Minor: "" , GitVersion: "v1.9.4" , GitCommit: "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546" , GitTreeState: "clean" , BuildDate: "2018-03-21T21:48:36Z" , GoVersion: "go1.9.1" , Compiler: "gc" , Platform: "linux/amd64" } |
起動できました!
Kubernetesを操作してみる
Podを起動して、起動状態を確認します。
1 2 3 4 5 6 7 8 | $ kubectl run hello-minikube --image=k8s.gcr.io /echoserver :1.4 --port=8080 deployment.apps "hello-minikube" created $ kubectl get pod NAME READY STATUS RESTARTS AGE hello-minikube-c6c6764d-rd67p 1 /1 Running 0 13m $ kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-minikube 1 1 1 1 10m |
サービスを作成して外部からアクセスできるようにします。
1 2 | $ kubectl expose deployment hello-minikube -- type =NodePort service "hello-minikube" exposed |
起動されたコンテナにアクセスします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $ curl $(minikube service hello-minikube --url) CLIENT VALUES: client_address=172.17.0.1 command =GET real path=/ query=nil request_version=1.1 request_uri=http: //192 .168.99.100:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* host=192.168.99.100:32582 user-agent=curl /7 .54.0 BODY: |
サービスを削除します。
1 2 | $ kubectl delete service hello-minikube service "hello-minikube" deleted |
Podを削除します。
1 2 | $ kubectl delete deployment hello-minikube deployment.extensions "hello-minikube" deleted |
Minikubeを停止します。
1 2 3 | $ minikube stop Stopping local Kubernetes cluster... Machine stopped. |
さいごに
結構簡単にローカルにKubernetes環境を構築できました。テストや検証用に有用そうですね!