Macでminikubeを使ってkubernetesクラスタを動かす
2018-03-17
Qiitakubernetesminikubeタイトル通り。 minikubeでローカルに kubenetes クラスタを構築してみる。
インストール
Homebrew-Cask で簡単にインストール出来る。
$ brew cask install minikube
事前準備
$ minikube start
して minikube を起動する。
そして、kubectl
で認識されることを確認する。
$ kubectl config current-context
minikube
minikube が docker を内包している形になっているので、環境変数もろもろを書き換える。
$ eval $(minikube docker-env)
ローカルの docker と minikube で Docker イメージを共有する
minikube が docker を内包している形になっているため
docker images
(eval $(minikube docker-env) && docker images)
では結果が異なる。
回避するには、eval $(minikube docker-env)
してからdocker build
するなどして、minikube 環境下 Docker イメージを作って登録するのが手っ取り早い。
あるいは、
docker save <repository>/<image>:<tag> | (eval $(minikube docker-env) && docker load)
とする方が後からでも出来るので手軽かもしれない。
何をやっているかというと、ローカル側の Docker イメージをdocker save
で文字列として書き出して、minikube 側で標準入力として受け取ってdocker load
して Docker イメージとして保存している。
さらに別の方法として少し面倒だが、ローカルに docker registry を立ててその registry にdocker push
しておき、その registry 上の Docker イメージとして使う、というのもある。
minikube で insecure docker registry を使う - Qiita
kubenetes を動かす
何でも良いので適当に作る。 今回は nginx を動かしてみる。
$ kubectl run --image=nginx --port=80 nginx
deployment "nginx" created
$ kubectl expose deployment nginx --port=80 --type=NodePort
service "nginx" exposed
$ kubectl get svc nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.104.96.71 <none> 80:31485/TCP 1m
これでnginx
にアクセスできる...というわけではない。
$ curl '10.104.96.71' -I
curl: (7) Failed to connect to 10.104.96.71 port 80: Operation timed out
minikube の機能を使ってアクセス出来る。
$ minikube service nginx --url
http://192.168.99.100:31485
この URL に対してリクエストを送れば nginx からレスポンスが返ってくる。
ちなみに--url
つけなければ勝手にブラウザで開かれる。
$ curl $(minikube service nginx --url) -I
HTTP/1.1 200 OK
Server: nginx/1.13.9
Date: Thu, 08 Mar 2018 10:12:23 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 20 Feb 2018 12:21:20 GMT
Connection: keep-alive
ETag: "5a8c12c0-264"
Accept-Ranges: bytes
minikube 経由でアクセスするあたりは以下を参照。
ダッシュボードを見る
minikube を使っていなければkubectl proxy
してlocalhost:8001/ui
で見れるアレ。
minikube dashboard
で見ることが出来る。
ちなみに Grafana でモニタリング用のダッシュボードも見ることが出来る。
minikube service --namespace=kube-system monitoring-grafana
どういったものが minikube で見れるかはminikube service list
すると一覧で表示されるようになっている。
from: https://qiita.com/petitviolet/items/1b91559e8c7b3dd6f737