minikube(ミニキューブ) は Kubernetes の環境を作成するためのパッケージで、単一 Node の環境構築をするコマンドです。
現在の Docker For Mac では Kubernetes が統合インストールされますが、minikube は別途インストールする必要があります。
Kubernetes を利用するには、以下のいずれかのハイパーバイザーをインストールが必要です。
macOS では、Hypervisor Framework に対応した HyperKit も利用できるためインストールします。
$ brew install hyperkit
HyperKit のバージョンを確認します。
$ hyperkit -v
hyperkit: v0.20200224-44-gb54460
homebrew コマンドで minikube をインストールします。
$ brew install minikube
minikube がインストールされたかバージョンを確認します。
$ minikube version
minikube version: v1.13.1
もし /usr/local/bin/minikube がない場合、現在のフォルダにある minikube を /usr/local/bin/ に移動します。
$ sudo mv minikube /usr/local/bin
minikube のドライバを HyperKit にして起動します。起動にはパスワードが必要です。
$ minikube start --vm-driver=hyperkit
...
Password:
...
🏄 Done! kubectl is now configured to use "minikube" by default
minikube の起動確認をします。Running と表示されていれば起動中です。
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
Docker For Mac のめnyメニューにも minikube が追加されています。
minikube を停止します。
$ minikube stop
minikube が停止したか確認します。
$ minikube status
minikube
type: Control Plane
host: Stopped
kubelet: Stopped
apiserver: Stopped
kubeconfig: Stopped
初回ハイパーバイザーを設定して起動しておくと、次回からはオプションなしで起動できます。
$ minikube start
起動前にクラスターを変更する場合、 config use を利用してから起動します。
$ kubectl config use クラスター名
kubectl でクラスタ構成を確認し、デフォルトで minikube クラスターが作成されているのを確認します。
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
docker-desktop docker-desktop docker-desktop
docker-for-desktop docker-desktop docker-desktop
* minikube minikube minikube
その他のクラスタは、Docker For Mac インストールで作成されたクラスターです。
Namespace 一覧を取得します。
$ kubectl get namespace
NAME STATUS AGE
default Active 19m
kube-node-lease Active 19m
kube-public Active 19m
kube-system Active 19m
default:
デフォルト Namespacekube-system:
Kubernetesシステムで作成されたオブジェクト用の Namespacekube-public:
全てのユーザーから読み取り可能な Namespaceリkube-system の Pod を取得します。
$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-f9fd979d6-gbpf4 1/1 Running 1 21m
etcd-minikube 1/1 Running 1 21m
kube-apiserver-minikube 1/1 Running 1 21m
kube-controller-manager-minikube 1/1 Running 1 21m
kube-proxy-kjbn8 1/1 Running 1 21m
kube-scheduler-minikube 1/1 Running 1 21m
storage-provisioner 1/1 Running 2 21m
minikube には機能拡張するアドオンがあり、一覧を確認して enabled となっているのが有効になっているアドオンです。
$ minikube addons list
ingress を追加してみます。
$ minikube addons enable ingress
🔎 Verifying ingress addon...
🌟 The 'ingress' addon is enabled
アドオンを利用停止にするときは以下のコマンドを実行します。
$ minikube addons enable アドオン名
ingress は https ロードバランサーで、IP管理を service ではなく ingress で管理することができます。
hello-world コンテナを起動して、Hello from Docker! のメッセージ表示されるか確認します。
$ docker run hello-world
...
Hello from Docker!
...
現在利用されていないコンテナーを削除したい場合は、 prune で削除しておきます。
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
c4e29bf9fb68a07e863384879fec3567342b9bb20c99c22c15aec8756c508b60
5d8680dcfcd40e1b9c1e0a52636106b10d118284f75494a902ff20f171a18dd4