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

 

追記

というコメントをいただいたのでbootstrapperオプションを指定した所、minikube v0.26.1でもkubernetes v1.9.4を起動することができた。すぱぶらさんありがとうございます!

入門 Kubernetes

入門 Kubernetes

posted with amazlet at 18.04.21
Kelsey Hightower Brendan Burns Joe Beda
オライリージャパン
売り上げランキング: 2,839

Leave a Reply

Your email address will not be published. Required fields are marked *