基本はこちらの公式ドキュメント通り進めればOK。
https://kubernetes.io/ja/docs/setup/learning-environment/minikube/
環境
OS
$ sw_vers
ProductName: macOS
ProductVersion: 11.6
BuildVersion: 20G165
$
Homebrewのバージョン
$ brew --version
Homebrew 3.2.17
Homebrew/homebrew-core (git revision 0e79905a9e5; last commit 2021-10-20)
$
Minikube のインストール
インストール方法には2種類(バイナリファイルをダウンロードする方法と、Homebrewを利用する方法)あるが、今回はHomebrewを使用したインストールを実施。
$ brew install minikube
インストール後、minikube
コマンドを入力して下記が表示されればインストール完了。
$ minikube version
minikube version: v1.23.2
commit: 0a0ad764652082477c00d51d2475284b5d39ceed
$
クイックスタート
ここからは下記のクイックスタートに沿って進める。
https://kubernetes.io/ja/docs/setup/learning-environment/minikube/#%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88
まずはMinikubeを起動し、クラスターを作成。
$ minikube start
😄 Darwin 11.6 上の minikube v1.23.2
✨ dockerドライバーが自動的に選択されました。他の選択肢: hyperkit, ssh
👍 コントロールプレーンのノード minikube を minikube 上で起動しています
🚜 イメージを Pull しています...
💾 Kubernetes v1.22.2 のダウンロードの準備をしています
> preloaded-images-k8s-v13-v1...: 511.69 MiB / 511.69 MiB 100.00% 7.50 MiB
> gcr.io/k8s-minikube/kicbase: 355.40 MiB / 355.40 MiB 100.00% 4.27 MiB p/
🔥 docker container (CPUs=2, Memory=1990MB) を作成しています...
🐳 Docker 20.10.8 で Kubernetes v1.22.2 を準備しています...
▪ 証明書と鍵を作成しています...
▪ Control Plane を起動しています...
▪ RBAC のルールを設定中です...
🔎 Kubernetes コンポーネントを検証しています...
▪ イメージ gcr.io/k8s-minikube/storage-provisioner:v5 を使用しています
🌟 有効なアドオン: storage-provisioner, default-storageclass
❗ /usr/local/bin/kubectl is version 1.19.7, which may have incompatibilites with Kubernetes 1.22.2.
▪ Want kubectl v1.22.2? Try 'minikube kubectl -- get pods -A'
🏄 完了しました! kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
$
単純なHTTPサーバーであるechoserver
という既存のイメージを使用して、Kubernetes Deploymentを作成する。
--port
を使用して8080番ポートで公開している。
$ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
deployment.apps/hello-minikube created
$
$ kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
$
下記のようにRunning
になっていれば起動完了。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-minikube-5d9b964bfb-965js 1/1 Running 0 5m7s
$
Serviceの詳細を確認するため、公開したServiceのURLを取得。
$ minikube service hello-minikube --url
🏃 Starting tunnel for service hello-minikube.
|-----------|----------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|------------------------|
| default | hello-minikube | | http://127.0.0.1:50975 |
|-----------|----------------|-------------|------------------------|
http://127.0.0.1:50975
❗ Dockerドライバーをdarwin上で動かしているため、実行するにはターミナルを開く必要があります。
表示されたURLをブラウザで表示するとServiceの詳細が表示される。
ダッシュボード
Kubernetes Dashboardでクラスタの確認。
https://kubernetes.io/ja/docs/tasks/access-application-cluster/web-ui-dashboard/
$ minikube dashboard --url=true
🤔 ダッシュボードの状態を確認しています...
🚀 プロキシを起動しています...
🤔 プロキシの状態を確認しています...
http://127.0.0.1:51022/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
$
表示されたURLをブラウザに入力するとダッシュボードが表示される。
http://127.0.0.1:51022/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
クラスタの停止
サービスの削除。
$ kubectl delete services hello-minikube
service "hello-minikube" deleted
$
デプロイの削除。
$ kubectl delete deployment hello-minikube
deployment.apps "hello-minikube" deleted
$
クラスタの停止。
$ minikube stop
✋ ノード "minikube" を停止しています...
🛑 SSH 経由で「minikube」の電源をオフにしています...
🛑 1台のノードが停止しました。
$
クラスタの削除。
$ minikube delete
🔥 docker の「minikube」を削除しています...
🔥 コンテナ "minikube" を削除しています...
🔥 /Users/h2-iwashita/.minikube/machines/minikube を削除しています...
💀 クラスタ "minikube" の全てのトレースを削除しました。
$