会社で検証用のKubernetes環境を作った。それとは別に、手元でも試せるようにしておきたいのでminikubeを使って用意する方法を記録しておく。
バージョン
各ソフトウェアのバージョンは以下の通り。
- macOS: High Sierra 10.13.4
- VirtualBox: 5.2.10 r122088 (Qt5.6.3)
- minikube: v0.25.2
- kubernetes: v1.9.4
minikubeをインストールする
2018年04月21日現在ではminikubeの最新バージョンはv0.26.1なのだが、これだとKubernetesのv1.9.4が起動しなかった。そのため、v0.25.2を使う。Release v0.25.2 · kubernetes/minikube から実行ファイルをダウンロードし、実行可能パスに置く。実行権限も付与する。
$ curl -L https://github.com/kubernetes/minikube/releases/download/v0.25.2/minikube-darwin-amd64 -o /path/to/minikube $ chmod +x /path/to/minikube
macOSの場合、Kubernetesを動かす環境としてHyperkit / xhyve / VirtualBox / VMWare Fusion を使える。おそらく、VirtualBoxをインストールしている人が多いと思うので、VirtualBoxを使う。
⟩ minikube start \ --vm-driver=virtualbox \ --kubernetes-version=v1.9.4 \ --memory=4096 Starting local Kubernetes v1.9.4 cluster... Starting VM... Downloading Minikube ISO 142.22 MB / 142.22 MB [============================================] 100.00% 0s Getting VM IP address... Moving files into cluster... Downloading localkube binary 163.02 MB / 163.02 MB [============================================] 100.00% 0s 0 B / 65 B [----------------------------------------------------------] 0.00% 65 B / 65 B [======================================================] 100.00% 0sSetting up certs... Connecting to cluster... Setting up kubeconfig... Starting cluster components... Kubectl is now configured to use the cluster. Loading cached images from config file.
以下のように、minikubeとclusterがRunningになっていればOK。
$ minikube status minikube: Running cluster: Running kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.105
kubectlからminikube環境に接続する
kubectlから確認する。kubectlは接続先のクラスターや認証情報を「コンテキスト」という単位で管理している。minikube startすると、以下のように、minikubeコンテキストを使う状態となっているはず(他のコンテキストは人によって異なる)。
$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE docker-for-desktop docker-for-desktop-cluster docker-for-desktop local default-cluster default-admin * minikube minikube minikube
minikubeというノードがあり、ReadyとなっていればOK。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready <none> 8m v1.9.4
デモ環境を動かす
何か動かしてみたい。今回はmicroservices-demo/microservices-demoを動かしてみよう。
⟩ kubectl create namespace sock-shop namespace "sock-shop" created ~/src/github.com/takaishi/hello2018/kubernetes_api · (kubernetes_api±) ⟩ kubectl apply -f ~/src/github.com/microservices-demo/microservices-demo/deploy/kubernetes/complete-demo.yaml deployment.extensions "carts-db" created service "carts-db" created deployment.extensions "carts" created service "carts" created deployment.extensions "catalogue-db" created service "catalogue-db" created deployment.extensions "catalogue" created service "catalogue" created deployment.extensions "front-end" created service "front-end" created deployment.extensions "orders-db" created service "orders-db" created deployment.extensions "orders" created service "orders" created deployment.extensions "payment" created service "payment" created deployment.extensions "queue-master" created service "queue-master" created deployment.extensions "rabbitmq" created service "rabbitmq" created deployment.extensions "shipping" created service "shipping" created deployment.extensions "user-db" created service "user-db" created deployment.extensions "user" created service "user" created
Podが全て起動するのを待つ。状態は以下のようにして確認しよう。
$ kubectl -n sock-shop get pods NAME READY STATUS RESTARTS AGE carts-74f4558cb8-cd4wk 1/1 Running 0 3m carts-db-7fcddfbc79-fxkbt 1/1 Running 0 3m catalogue-676d4b9f7c-9cc6z 1/1 Running 0 3m catalogue-db-5c67cdc8cd-ndxrh 1/1 Running 0 3m front-end-977bfd86-g4qbk 1/1 Running 0 3m orders-787bf5b89f-n52z9 1/1 Running 0 3m orders-db-775655b675-j9krd 1/1 Running 0 3m payment-75f75b467f-rr9ql 1/1 Running 0 3m queue-master-5c86964795-swzql 1/1 Running 0 3m rabbitmq-96d887875-qwmfn 1/1 Running 0 3m shipping-5bd69fb4cc-l7x66 1/1 Running 0 3m user-5bd9b9c468-tc8pw 1/1 Running 0 3m user-db-5f9d89bbbb-r5nnw 1/1 Running 0 3m
全Podが起動状態となったら、以下のコマンドを実行する。ブラウザで靴下のショップページが開くはずだ。
minikube service -n sock-shop front-end
minikube環境を停止する
最後に、minikube環境を停止して、終わり。
$ minikube stop
追記
v0.26 から minikube の bootstrapper のデフォルトが localkube から kubeadm に変更になった影響かもしれません。 –bootstrapper=localkube で以前と同じになります。
— すぱぶら (@superbrothers) April 21, 2018
というコメントをいただいたのでbootstrapperオプションを指定した所、minikube v0.26.1でもkubernetes v1.9.4を起動することができた。すぱぶらさんありがとうございます!
オライリージャパン
売り上げランキング: 2,839