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を使います。
$ brew cask install minikube
インストールできたら早速起動してみましょう。--vm-driver=
で、ハイパーバイザーを指定できます。
$ 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を起動して、起動状態を確認します。
$ 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
サービスを作成して外部からアクセスできるようにします。
$ kubectl expose deployment hello-minikube --type=NodePort service "hello-minikube" exposed
起動されたコンテナにアクセスします。
$ 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:
サービスを削除します。
$ kubectl delete service hello-minikube service "hello-minikube" deleted
Podを削除します。
$ kubectl delete deployment hello-minikube deployment.extensions "hello-minikube" deleted
Minikubeを停止します。
$ minikube stop Stopping local Kubernetes cluster... Machine stopped.
さいごに
結構簡単にローカルにKubernetes環境を構築できました。テストや検証用に有用そうですね!