repl.info

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を起動することができた。すぱぶらさんありがとうございます!

入門 Kubernetes

入門 Kubernetes

posted with amazlet at 18.04.21

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

Amazon.co.jpで詳細を見る