我们通常在本地开发环境安装 Minikube, 用来学习、体验 K8s 的基本功能,也用来模拟测试应用部署在 k8s 的情况。本文介绍如何在 Apple M1 电脑中安装 Minikube。

安装 Docker

Docker官方网站 下载 Docker Desktop, 选择 Mac with Apple Chip 的版本。

下载完成后进行安装,按提示默认安装即可。

下载 minikube

下载 minikube 的 arm64 的版本,下载地址

1
https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64

下载完成后的文件就是一个可执行文件,不需要安装。只需要赋予执行权限并放置到 PATH 路径下即可。 执行

1
chmod +x minikube-darwin-arm64

然后

1
sudo mv minikube-darwin-arm64 /usr/local/bin/minikube

启动 minikube

执行

1
minikube start --driver=docker

第一次运行可能会提示该程序(minikube)没有是不安全的程序而阻止运行,这时候需要在 “系统偏好设置” -> “安全与隐私” -> “通用” 中完成同意运行的操作,选择”依然运行”。 然后再次在终端窗口中运行启动的命令。

1
minikube start --driver="docker" --memory=2048 --image-mirror-country="cn"

系统输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
😄  Darwin 12.0.1 (arm64) 上的 minikube v1.24.0
✨ 根据用户配置使用 docker 驱动程序
✅ 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔥 Creating docker container (CPUs=2, Memory=2048MB) ...
🐳 正在 Docker 20.10.8 中准备 Kubernetes v1.22.3…
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔎 Verifying Kubernetes components...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

检查minikube状态

执行

1
minikube status

系统显示

1
2
3
4
5
6
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

使用 docker images 和 docker ps 命令查看

1
2
REPOSITORY                                                    TAG                                                     IMAGE ID       CREATED        SIZE
docker/desktop-kubernetes kubernetes-v1.22.4-cni-v0.8.5-critools-v1.17.0-debian 84694ddaaffe 5 weeks ago 287MB
1
2
CONTAINER ID   IMAGE                                                                 COMMAND                  CREATED          STATUS          PORTS                                                                                                                                  NAMES
98ffccd83d9c registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.28 "/usr/local/bin/entr…" 26 minutes ago Up 26 minutes 127.0.0.1:61388->22/tcp, 127.0.0.1:61389->2376/tcp, 127.0.0.1:61391->5000/tcp, 127.0.0.1:61387->8443/tcp, 127.0.0.1:61390->32443/tcp minikube

可以看到,实际上 pull 一个名为 desktop-kubernetes 的进行并运行了对应的容器形成的 minikube 的实例。