minikubeを使ってローカルでKubernetes v1.9.4を動かす(2018年4月版)
会社で検証用の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を起動することができた。すぱぶらさんありがとうございます!
posted with amazlet at 18.04.21
Kelsey Hightower Brendan Burns Joe Beda
オライリージャパン
売り上げランキング: 2,839