作成:2023年3月1日、更新:2023年3月138日
表題の環境整備を行いましたのでメモしておきます。
MacOS Monterey 12.6.3 の Core i7(1章) と M1(2章) にインストールしました。
2023年3月14日時点: Rancher Desktop(0章)が良さそうです。
0. Rancher Desktop のインストールの場合
事前確認
Docker Desktop がインストールされていればアンインストールして削除。念のためターミナルでも確認
% docker --version
zsh: command not found: docker
docker-compose のインストールされていないことを確認。
% docker-compose --version
zsh: command not found: docker-compose
インストール
Docker Desktop をダウンロードしてインストール
アプリケーションから Rancher Desktop を起動。
dockered (moby) を選択すると、Dockerコマンドとdocker composeコマンドが使える。
ターミナルを立ち上げ直して、動作確認
% docker --version
Docker version 23.0.1-rd, build 393499b
% docker compose version
Docker Compose version v2.16.0
1. Core i7 の MacBook Pro へインストールの場合
1.1 minikube と hyperkit のインストール
brew install minikube hyperkit
1.2 Docker CLIのインストール
% brew install docker
Warning: Treating docker as a formula. For the cask, use homebrew/cask/docker
==> Fetching docker
==> Downloading https://ghcr.io/v2/homebrew/core/docker/manifests/23.0.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/docker/blobs/sha256:b299bdae239
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring docker--23.0.1.monterey.bottle.tar.gz
==> Caveats
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/docker/23.0.1: 12 files, 32.2MB
==> Running `brew cleanup docker`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
minikube のバージョン確認
% minikube version
minikube version: v1.29.0
1.3 残りのインストール
詳しくはこの参考ページ。
brew install docker-compose docker-credential-helper
1.4 minikube の開始と終了
minikube を開始します。
% minikube start --driver=hyperkit
😄 Darwin 12.6.3 上の minikube v1.29.0
✨ ユーザーの設定に基づいて hyperkit ドライバーを使用します
💾 docker-machine-driver-hyperkit ドライバーをダウンロードしています:
> docker-machine-driver-hyper...: 65 B / 65 B [---------] 100.00% ? p/s 0s
> docker-machine-driver-hyper...: 8.42 MiB / 8.42 MiB 100.00% 5.32 MiB p/
🔑 'hyperkit' ドライバーは権限昇格が必要です。次のコマンドを実行してください:
$ sudo chown root:wheel /Users/ryo/.minikube/bin/docker-machine-driver-hyperkit
$ sudo chmod u+s /Users/ryo/.minikube/bin/docker-machine-driver-hyperkit
Password:
💿 VM ブートイメージをダウンロードしています...
> minikube-v1.29.0-amd64.iso....: 65 B / 65 B [---------] 100.00% ? p/s 0s
> minikube-v1.29.0-amd64.iso: 276.35 MiB / 276.35 MiB 100.00% 14.91 MiB p
👍 minikube クラスター中のコントロールプレーンの minikube ノードを起動しています
💾 ロード済み Kubernetes v1.26.1 をダウンロードしています...
> preloaded-images-k8s-v18-v1...: 397.05 MiB / 397.05 MiB 100.00% 13.07 M
🔥 hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) を作成しています...
🐳 Docker 20.10.23 で Kubernetes v1.26.1 を準備しています...
▪ 証明書と鍵を作成しています...
▪ コントロールプレーンを起動しています...
▪ RBAC のルールを設定中です...
🔗 bridge CNI (コンテナーネットワークインターフェース) を設定中です...
▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
🔎 Kubernetes コンポーネントを検証しています...
🌟 有効なアドオン: storage-provisioner, default-storageclass
🏄 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました
minikube を停止します。
% minikube stop
✋ 「minikube」ノードを停止しています...
🛑 1 台のノードが停止しました。
1.5 Docker CLI を minikube で使用します
Docker CLI の向き先を hyperkit に向けます(minikube が実行状態で)。
% minikube docker-env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.64.2:2376"
export DOCKER_CERT_PATH="/Users/ryo/.minikube/certs"
export MINIKUBE_ACTIVE_DOCKERD="minikube"
# To point your shell to minikube's docker-daemon, run:
# eval $(minikube -p minikube docker-env)
末尾に記載のあるコマンドを実行します。
eval $(minikube -p minikube docker-env)
~/.zshrc の末尾に上記コマンドを追記しておきます。
1.6 dockerコマンドを試します
実行できました。
% docker version
Client: Docker Engine - Community
Version: 23.0.1
API version: 1.41 (downgraded from 1.42)
Go version: go1.19.5
Git commit: a5ee5b1dfc
Built: Thu Feb 9 19:15:59 2023
OS/Arch: darwin/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 20.10.23
API version: 1.41 (minimum version 1.12)
Go version: go1.18.10
Git commit: 6051f14
Built: Thu Jan 19 17:36:08 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.6.15
GitCommit: 5b842e528e99d4d4c1686467debf2bd4b88ecd86
runc:
Version: 1.1.4
GitCommit: 5fd4c4d144137e991c4acebb2146ab1483a97925
docker-init:
Version: 0.19.0
GitCommit: de40ad0
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb9fe5d20e7 6e38f40d628d "/storage-provisioner" 4 minutes ago Up 4 minutes k8s_storage-provisioner_storage-provisioner_kube-system_267c9554-10ff-4f28-8e96-8f6adf703e48_2
edfd31ac7e14 5185b96f0bec "/coredns -conf /etc…" 4 minutes ago Up 4 minutes k8s_coredns_coredns-787d4945fb-cwmzr_kube-system_7cf934af-079c-438f-8bd6-448defe1096c_1
2f0f36655339 registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_coredns-787d4945fb-cwmzr_kube-system_7cf934af-079c-438f-8bd6-448defe1096c_1
c7354b7a452f 46a6bb3c77ce "/usr/local/bin/kube…" 4 minutes ago Up 4 minutes k8s_kube-proxy_kube-proxy-csz22_kube-system_1c278caa-f870-4ef3-bf8a-c726c29f268a_1
524c94dc08a2 registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-proxy-csz22_kube-system_1c278caa-f870-4ef3-bf8a-c726c29f268a_1
ac75af3cd1e2 registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_storage-provisioner_kube-system_267c9554-10ff-4f28-8e96-8f6adf703e48_1
0d7c12cd037e fce326961ae2 "etcd --advertise-cl…" 4 minutes ago Up 4 minutes k8s_etcd_etcd-minikube_kube-system_d328e0ae734934e23bc5766da67627b3_1
83e0368e8851 655493523f60 "kube-scheduler --au…" 4 minutes ago Up 4 minutes k8s_kube-scheduler_kube-scheduler-minikube_kube-system_197cd0de602d7cb722d0bd2daf878121_1
c3e071b5a3d5 e9c08e11b07f "kube-controller-man…" 4 minutes ago Up 4 minutes k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_96939d3d2117efe8f605629d47b5f330_1
37ca2c1c5025 deb04688c4a3 "kube-apiserver --ad…" 4 minutes ago Up 4 minutes k8s_kube-apiserver_kube-apiserver-minikube_kube-system_eb771b202df88bb67e1ef32bf99dd782_1
d48ad1e3d3e1 registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-scheduler-minikube_kube-system_197cd0de602d7cb722d0bd2daf878121_1
cae0d34a1fcb registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-controller-manager-minikube_kube-system_96939d3d2117efe8f605629d47b5f330_1
6eda8741f79b registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-apiserver-minikube_kube-system_eb771b202df88bb67e1ef32bf99dd782_1
67dbc316a058 registry.k8s.io/pause:3.6 "/pause" 4 minutes ago Up 4 minutes k8s_POD_etcd-minikube_kube-system_d328e0ae734934e23bc5766da67627b3_1
1.7 kubectl のバージョンを確認します
% kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.2", GitCommit:"fc04e732bb3e7198d2fa44efa5457c7c6f8c0f5b", GitTreeState:"clean", BuildDate:"2023-02-22T13:32:21Z", GoVersion:"go1.20.1", Compiler:"gc", Platform:"darwin/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.1", GitCommit:"8f94681cd294aa8cfd3407b8191f6c70214973a4", GitTreeState:"clean", BuildDate:"2023-01-18T15:51:25Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}
% kubectl version --output=yaml
clientVersion:
buildDate: "2023-02-22T13:32:21Z"
compiler: gc
gitCommit: fc04e732bb3e7198d2fa44efa5457c7c6f8c0f5b
gitTreeState: clean
gitVersion: v1.26.2
goVersion: go1.20.1
major: "1"
minor: "26"
platform: darwin/amd64
kustomizeVersion: v4.5.7
serverVersion:
buildDate: "2023-01-18T15:51:25Z"
compiler: gc
gitCommit: 8f94681cd294aa8cfd3407b8191f6c70214973a4
gitTreeState: clean
gitVersion: v1.26.1
goVersion: go1.19.5
major: "1"
minor: "26"
platform: linux/amd64
1.8 kubectl の設定を検証
クラスタに接続するための設定が正しく行われていることを確認します。
% kubectl cluster-info
Kubernetes control plane is running at https://192.168.**.*:8443
CoreDNS is running at https://192.168.**.*:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
1.9 最後に動作確認で色々コマンド試します
クラスタの状態を確認します。
% minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
docker-env: in-use
イメージの一覧を表示します。
% minikube image ls
registry.k8s.io/pause:3.9
registry.k8s.io/pause:3.6
registry.k8s.io/kube-scheduler:v1.26.1
registry.k8s.io/kube-proxy:v1.26.1
registry.k8s.io/kube-controller-manager:v1.26.1
registry.k8s.io/kube-apiserver:v1.26.1
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3
gcr.io/k8s-minikube/storage-provisioner:v5
kubectl のヘルプです。
% kubectl --help
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/
Basic Commands (Beginner):
create Create a resource from a file or from stdin
expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service
run Run a particular image on the cluster
set Set specific features on objects
(以降、略)
2. M1 MacBook Pro へインストールの場合
Podman をインストールします。
brew install podman
minikukbe をインストールします。
brew install minikube
podman を初期化し、Fedra CoreOS のダウンロードを行います。
podman machine init --cpus 4 --memory 8192 --rootful
podman machine start
minikube をスタートさせます。
minikube start --driver=podman
dockerコマンドを使えるようにします。
Docker CLI をインストールします(Docker desktop ではありません)
brew install docker
eval $(minikube -p minikube docker-env)
動作確認します。
% docker ps
% kubectl describe all
% podman version
% podman ps
% kubectl version
% kubectl cluster-info
% minikube status
% minikube image ls
minikube を停止します。
% minikube stop
3. 参考
・Docker Desktop for Macに依存しないminikube + hyperkitによるDocker環境の構築
・hyperkit
・入門・kubectlの概要
・Minikube on M2 MacBook Pro with Podman
4. おまけ
Minikube on MacOS Monterey 環境構築を参考に xhyvw のインストールを試みたらエラー出ました。結果、xhyvw は不要でした。
brew install docker-machine-driver-xhyve
% brew install docker-machine-driver-xhyve
Running `brew update --auto-update`...
==> Downloading https://formulae.brew.sh/api/formula.jws.json
######################################################################## 100.0%
==> Downloading https://formulae.brew.sh/api/cask.jws.json
######################################################################## 100.0%
Error: docker-machine-driver-xhyve has been disabled because it does not build!
以上です。