Kubernetesをローカル環境に構築する
Kubernetes(k8s)とは
コンテナ化されたアプリケーションのデプロイ、スケーリングなどの管理を自動化するプラットフォーム。 k8sでは、コンテナが起動するノードをk8sノードと呼び、それらを管理するノードk8sマスターと呼ぶ。ノードの集合体がk8sクラスターである。
Minikube
MinikubeはSIG-Cluster-Lifecycleで作られた簡単にローカルにk8sクラスターを構築・実行できるツールである。 Minikubeではローカルの仮装マシン上にk8sをインストールするため、ハイパーバイザーが必要となる。
ハイパーバイザーごとに応じたDriverを使用して操作することで、自動的にホストとなるコンテナや仮想マシンを作成し、 その環境上にk8sをインストールする。
macOSにおけるハイパーバイザーにはDocker/HyperKit driver/VirtualBox/Parallels/Vmware/Fusion/Podmanなどがある。
現状、M1macではdockerしか対応してなさそう、、?
Minikubeのインストール
$ brew install minikube
==> Downloading https://ghcr.io/v2/homebrew/core/kubernetes-cli/manifests/1.25.0
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/kubernetes-cli/blobs/sha256:e10
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/minikube/manifests/1.26.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/minikube/blobs/sha256:ae9660e6a
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Installing dependencies for minikube: kubernetes-cli
==> Installing minikube dependency: kubernetes-cli
==> Pouring kubernetes-cli--1.25.0.arm64_monterey.bottle.tar.gz
🍺 /opt/homebrew/Cellar/kubernetes-cli/1.25.0: 228 files, 52.8MB
==> Installing minikube
==> Pouring minikube--1.26.1.arm64_monterey.bottle.tar.gz
==> Caveats
zsh completions have been installed to:
/opt/homebrew/share/zsh/site-functions
==> Summary
🍺 /opt/homebrew/Cellar/minikube/1.26.1: 9 files, 70.6MB
==> Running `brew cleanup minikube`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Caveats
==> minikube
zsh completions have been installed to:
/opt/homebrew/share/zsh/site-functions
Minikubeを使用してk8s環境を構築する
$ minikube start
😄 Darwin 12.5.1 (arm64) 上の minikube v1.26.1
✨ docker ドライバーが自動的に選択されました
📌 root 権限を持つ Docker Desktop ドライバーを使用
👍 minikube クラスター中のコントロールプレーンの minikube ノードを起動しています
🚜 ベースイメージを取得しています...
💾 ロード済み Kubernetes v1.24.3 をダウンロードしています...
> preloaded-images-k8s-v18-v1...: 342.82 MiB / 342.82 MiB 100.00% 20.69 M
> gcr.io/k8s-minikube/kicbase: 348.00 MiB / 348.00 MiB 100.00% 10.00 MiB
> gcr.io/k8s-minikube/kicbase: 0 B [________________________] ?% ? p/s 27s
🔥 docker container (CPUs=2, Memory=2200MB) を作成しています...
🐳 Docker 20.10.17 で Kubernetes v1.24.3 を準備しています...
▪ 証明書と鍵を作成しています...
▪ コントロールプレーンを起動しています...
▪ RBAC のルールを設定中です...
🔎 Kubernetes コンポーネントを検証しています...
▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
🌟 有効なアドオン: storage-provisioner, default-storageclass
🏄 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました
Contextの切り替え
複数のk8sクラスタを利用している場合はk8sのContextを切り替える必要がある。
$ kubectl config use-context minikube
Switched to context "minikube".
ノードの確認
minikubeがk8sノードとして認識されている。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 4m41s v1.24.3
minikubeクラスタの削除
$ minikube delete
🔥 docker の「minikube」を削除しています...
🔥 コンテナー「minikube」を削除しています...
🔥 /Users/yuhi-sa/.minikube/machines/minikube を削除しています...
💀 クラスター「minikube」の全てのトレースを削除しました。
参考
Tags: