Help us understand the problem. What is going on with this article?

Macでminikubeを使ってkubernetesクラスタを動かす

More than 1 year has passed since last update.

タイトル通り。
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経由でアクセスするあたりは以下を参照。

ローカルでkubernetesを動かせるminikubeを試す - 年中アイス

ダッシュボードを見る

minikubeを使っていなければkubectl proxyしてlocalhost:8001/uiで見れるアレ。

minikube dashboardで見ることが出来る。

ちなみにGrafanaでモニタリング用のダッシュボードも見ることが出来る。

minikube service --namespace=kube-system monitoring-grafana

どういったものがminikubeで見れるかはminikube service listすると一覧で表示されるようになっている。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away