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 versionClient 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=8080deployment.apps "hello-minikube" created$ kubectl get podNAME READY STATUS RESTARTS AGEhello-minikube-c6c6764d-rd67p 1/1 Running 0 13m$ kubectl get deploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEhello-minikube 1 1 1 1 10m |
サービスを作成して外部からアクセスできるようにします。
1 2 | $ kubectl expose deployment hello-minikube --type=NodePortservice "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.1command=GETreal path=/query=nilrequest_version=1.1request_uri=http://192.168.99.100:8080/SERVER VALUES:server_version=nginx: 1.10.0 - lua: 10001HEADERS RECEIVED:accept=*/*host=192.168.99.100:32582user-agent=curl/7.54.0BODY: |
サービスを削除します。
1 2 | $ kubectl delete service hello-minikubeservice "hello-minikube" deleted |
Podを削除します。
1 2 | $ kubectl delete deployment hello-minikubedeployment.extensions "hello-minikube" deleted |
Minikubeを停止します。
1 2 3 | $ minikube stopStopping local Kubernetes cluster...Machine stopped. |
さいごに
結構簡単にローカルにKubernetes環境を構築できました。テストや検証用に有用そうですね!