最近業務でKubernetesを使うことが多いので、勉強がてらminikubeを使って遊んでみたいと思います。
minikueとはローカル環境でKubernetesを簡単に始められるツールのことで、シングルノードのKubernetesクラスターをMacとかのローカル環境常に構築することができます。
環境
- MaxOS(Apple M2m Ventura)
- Docker version 20.10.24
minikubeのインストール
minikubeのインストール方法は公式を参考にインストールします。
https://minikube.sigs.k8s.io/docs/start/
上記のリンクからInstallationでご自身の環境に合わせて選択していただき、コマンド等を実行してインストールするだけです。
minikubeの起動
minikubeを起動するには下記の要件を満たしていないといけないようです。
- 2 CPUs or more
- 2GB of free memory
- 20GB of free disk space
- Internet connection
- Container or virtual machine manager, such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation
ContainerかVirtual machineがないといけないので、いずれかを準備しておいてください。この記事ではDockerを使います。
minikubeをインストールできたら下記のコマンドでminikubeをstartします。(起動に20秒くらいかかりました)
$ minikube start
起動することができたらkubectlを使って操作することができるようになるようです。kubectlをインストールしていない方は下記などを参考にインストールしておいてください。
https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/
試しにPodのリストを取得してみます。
% kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-787d4945fb-jk587 1/1 Running 1752 (66m ago) 136d
kube-system etcd-minikube 1/1 Running 2 (66m ago) 136d
kube-system kube-apiserver-minikube 1/1 Running 2 (66m ago) 136d
kube-system kube-controller-manager-minikube 1/1 Running 2 (66m ago) 136d
kube-system kube-proxy-l9qd2 1/1 Running 2 (66m ago) 136d
kube-system kube-scheduler-minikube 1/1 Running 2 (66m ago) 136d
kube-system storage-provisioner 1/1 Running 1768 (2m35s ago) 136d
-Aオプションは全てのNamespaceのPodを表示するオプション
ダッシュボードの表示
下記のコマンドを実行することでローカル環境でKubernetes
ダッシュボードを閲覧することができます。
$ minikube dashboard
アプリケーションのデプロイ
ローカルに構築したKubernetesクラスターにアプリケーションをデプロイしてみます。
Service
下記のコマンドでデプロイメントを作成して、ポート8080で公開してみます。
# deployment作成
$ kubectl create deployment hello-minikube --image=kicbase/echo-server
deployment.apps/hello-minikube created
# portの公開
$ kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
サービスが作成されているか確認
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube NodePort 10.101.160.112 <none> 8080:31193/TCP 23s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 136d
port-forwardしてブラウザからlocalhost:7080にアクセスしてみます。
$ kubectl port-forward service/hello-minikube 7080:8080
minikubeのクラスター管理
Kubernetesクラスターの一時停止
$ minikube pause
minikubeのクラスター停止
$ minikube stop
メモリの設定変更
$ minikube config set memory {value}