LoginSignup
1
0

More than 1 year has passed since last update.

Kubernetes学習のためにminikube環境を作る

Posted at

minikubeとは

kubernetesのお試しに使える。Kubernetes構築は大変そうなので、勉強用に使える環境は嬉しい。
普通、kubernetesは複数ノードで動かすものだが、1つのノードで動かすことができるらしい。

必要スペックを確認

minikubeスタートガイドより

項目 必要スペック
CPU 2CPU
MEM 2GB
DISK 20GB

おうちクラウドに上記スペックのAlmaLinux8.6を立てて動かす。
おうちクラウド立ててると、ほしいときにVM立てられるのがいい。

minikube環境構築

Dockerをインストールしておく。
Dockerのインストールはこちらの記事を参照。
Docker composeまでは入れなくてもいいのかな?

minikubeをダウンロード&実行ファイルをパスに追加

minikubeを動かしたいサーバー
# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# install minikube-linux-amd64 /usr/local/bin/minikube

minikubeを実行

root権限で実行する場合は--forceオプションをつける。

minikubeを動かしてるサーバー
# minikube start --force
実行中のメッセージ
😄  Almalinux 8.6 上の minikube v1.28.0
❗  minikube は --force が付与された場合、様々な検証をスキップします (これは予期せぬ挙動を引き起こすかも知れません)
✨  docker ドライバーが自動的に選択されました。他の選択肢: ssh, none
🛑  「docker」ドライバーは root 権限で使用すべきではありません。root での継続を希望する場合、--force を使用してください。
💡  VM 内で minikube を実行している場合、--driver=none の使用を検討してください:
📘    https://minikube.sigs.k8s.io/docs/reference/drivers/none/

⛔  要求されたメモリー割り当て (1811MB) が推奨の最小値 1900MB 未満です。デプロイは失敗するかもしれません。


🧯  要求された 1811MiB のメモリー割当は、システムのオーバーヘッド (合計システムメモリー: 1811MiB) に十分な空きを残しません。安定性の問題に直面するかも知れません。
💡  提案: Start minikube with less memory allocated: 'minikube start --memory=1811mb'

📌  root 権限を持つ Docker ドライバーを使用
👍  minikube クラスター中のコントロールプレーンの minikube ノードを起動しています
🚜  ベースイメージを取得しています...
💾  ロード済み Kubernetes v1.25.3 をダウンロードしています...
    > preloaded-images-k8s-v18-v1...:  385.44 MiB / 385.44 MiB  100.00% 97.26 M
    > gcr.io/k8s-minikube/kicbase:  386.27 MiB / 386.27 MiB  100.00% 14.26 MiB 
    > gcr.io/k8s-minikube/kicbase:  0 B [________________________] ?% ? p/s 13s
🔥  docker container (CPUs=2, Memory=1811MB) を作成しています...
🐳  Docker 20.10.20 で Kubernetes v1.25.3 を準備しています...
    ▪ 証明書と鍵を作成しています...
    ▪ コントロールプレーンを起動しています...
    ▪ RBAC のルールを設定中です...
🔎  Kubernetes コンポーネントを検証しています...
    ▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
🌟  有効なアドオン: default-storageclass, storage-provisioner
💡  kubectl が見つかりません。kubectl が必要な場合、'minikube kubectl -- get pods -A' を試してください
🏄  終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました

終了した旨のメッセージが表示されたら完了。
インストール中にメモリが足りないっぽいメッセージが出てたけど、swapを使ってなんとかインストールしてくれたのかな?
メッセージを見ると、Dockerを使って構築してくれてることがわかる。

コンテナ起動状態を確認

Dockerを使ってkubernetesクラスタが動いていることがわかる。

minikubeを動かしてるサーバー
# docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED         STATUS         PORTS                                                                                                                                  NAMES
eecfd2f5c752   gcr.io/k8s-minikube/kicbase:v0.0.36   "/usr/local/bin/entr…"   6 minutes ago   Up 6 minutes   127.0.0.1:32772->22/tcp, 127.0.0.1:32771->2376/tcp, 127.0.0.1:32770->5000/tcp, 127.0.0.1:32769->8443/tcp, 127.0.0.1:32768->32443/tcp   minikube

kubectlを使う

minikubeを実行すると、kubectlもついてくるようである。
minikube kubectl --コマンドで実行するようになっているため使い勝手が悪い。

minikubeを動かしてるサーバー
# minikube kubectl -- get po -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-565d847f94-bdq7s           1/1     Running   0             18m
kube-system   etcd-minikube                      1/1     Running   0             18m
kube-system   kube-apiserver-minikube            1/1     Running   0             18m
kube-system   kube-controller-manager-minikube   1/1     Running   0             18m
kube-system   kube-proxy-jjxnf                   1/1     Running   0             18m
kube-system   kube-scheduler-minikube            1/1     Running   0             18m
kube-system   storage-provisioner                1/1     Running   1 (18m ago)   18m

エイリアスを書いてあげることでkubectlで実行できるようにする。

minikubeを動かしてるサーバー
# alias kubectl="minikube kubectl --"
minikubeを動かしてるサーバー
[root@minikube ~]# kubectl get po -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-565d847f94-bdq7s           1/1     Running   0             22m
kube-system   etcd-minikube                      1/1     Running   0             22m
kube-system   kube-apiserver-minikube            1/1     Running   0             22m
kube-system   kube-controller-manager-minikube   1/1     Running   0             22m
kube-system   kube-proxy-jjxnf                   1/1     Running   0             22m
kube-system   kube-scheduler-minikube            1/1     Running   0             22m
kube-system   storage-provisioner                1/1     Running   1 (21m ago)   22m

今回は、エイリアスを書いてminikubeのkubectlを使えるようにしたが、kubectlをインストールしても良さそう。

クラスタ構成を確認

コントロールプレーン(マスターノード)の起動と、内部DNSのエンドポイントが確認できた。

minikubeを動かしてるサーバー
# kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

ノード状態確認

minikubeは1ノードで動かすものなので1つだけ表示されている。

minikubeを動かしてるサーバー
# kubectl get node
NAME       STATUS   ROLES           AGE    VERSION
minikube   Ready    control-plane   121m   v1.25.3

その他minikubeコマンド

コマンド 内容
minikube start 仮想マシンを起動する
minikube stop 仮想マシンを停止
minikube delete 仮想マシンを削除
minikube status 起動状態を確認する
minikube ip 仮想マシンのIPアドレスを確認
minikube ssh 仮想マシンへSSH接続する
minikube addons list アドオンリストを表示する
minikube dashboard Kubernetesダッシュボードを起動

外部サーバーなのが問題なのか、以下がうまく動かない・・・(時間見つけて解決方法調べます)

ダッシュボードを使う

アドオンを追加すると使えるようになる。

minikubeを動かしてるサーバー
# minikube addons enable metrics-server
💡  metrics-server is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
    ▪ k8s.gcr.io/metrics-server/metrics-server:v0.6.1 イメージを使用しています
🌟  'metrics-server' アドオンが有効です

ダッシュボードを起動する。
--urlオプションを追加してもよい。

minikubeを動かしてるサーバー
# minikube dashboard

Grafanaを使う

minikubeを動かしてるサーバー
# minikube addons enable heapster
⌛  metrics-server アドオンを使用します (heapster は廃止予定です)
💡  metrics-server is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
    ▪ k8s.gcr.io/metrics-server/metrics-server:v0.6.1 イメージを使用しています
🌟  'metrics-server' アドオンが有効です
minikubeを動かしてるサーバー
# kubectl get svc --all-namespaces
NAMESPACE              NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default                kubernetes                  ClusterIP   10.96.0.1        <none>        443/TCP                  104m
kube-system            kube-dns                    ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   104m
kube-system            metrics-server              ClusterIP   10.108.86.162    <none>        443/TCP                  76m
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.109.205.197   <none>        8000/TCP                 81m
kubernetes-dashboard   kubernetes-dashboard        ClusterIP   10.105.102.28    <none>        80/TCP                   81m

とりあえずminikubeは動いたようなので先に進める。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0