【MacOS】M3 Pro芯片MacBook极速搭建Kubernetes
M3 Pro 芯片 MacBook 2023上使用 Colima 安装 Kubernetes。
Colima 轻量、高效,并且在 Apple Silicon 架构上表现出色。
下面是详细的、一步一步的安装和配置指南。
核心思路
我们将通过以下步骤完成整个过程:
- 准备工作: 安装必要的工具,主要是 Homebrew。
- 安装核心软件: 使用 Homebrew 安装 Colima, Docker 客户端, 和
kubectl
。 - 启动并配置 Colima: 启动 Colima 虚拟机,并特别指定启用 Kubernetes (K3s)。
- 验证安装: 确认 Kubernetes 集群是否正常运行。
- 部署示例应用: 部署一个简单的 Nginx 应用来测试整个流程。
第一步:准备工作 (安装 Homebrew)
Homebrew 是 macOS 上最流行的包管理器。如果你的电脑上还没有安装,请先安装它。
打开你的“终端” (Terminal) 应用,粘贴并执行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装过程中会提示你输入电脑密码,并按回车键确认。安装完成后,根据终端的提示,将 Homebrew 的路径添加到你的 Shell 配置文件中(通常是 ~/.zshrc
)。
第二步:安装 Colima, Docker 和 kubectl
现在,我们使用 Homebrew 来安装所有需要的工具。
- 安装 Colima: Colima 是核心,它会创建并管理用于运行容器的虚拟机。
- 安装 Docker 客户端: Colima 在其虚拟机内部运行 Docker 守护进程,我们需要在 macOS 上安装 Docker 客户端来与它交互。注意:这不会安装庞大的 Docker Desktop 应用。
- 安装 kubectl: 这是与 Kubernetes 集群交互的命令行工具。
在终端中执行以下命令:
brew install colima docker kubectl
等待所有工具安装完成。
第三步:启动 Colima 并启用 Kubernetes
这是最关键的一步。我们将启动 Colima,并告诉它我们需要一个 Kubernetes 集群。Colima 默认会使用轻量级的 K3s 来搭建集群。
对于 M3 Pro 芯片,我们可以分配更多的资源以获得更好的性能。
在终端中执行以下命令:
colima start --cpu 4 --memory 8 --arch aarch64 --kubernetes
让我们分解一下这个命令:
colima start
: 启动 Colima 虚拟机。--cpu 4
: 分配 4 个 CPU核心给虚拟机。M3 Pro 性能很强,4-6 核是比较合适的选择。--memory 8
: 分配 8 GB 内存给虚拟机。对于运行 Kubernetes 和一些应用,8GB 是一个很好的起点。--arch aarch64
: 非常重要! 这个参数明确告诉 Colima 使用 ARM64 架构,这与你的 M3 Pro 芯片原生匹配,可以获得最佳性能。--kubernetes
: 核心参数! 这个标志告诉 Colima 在启动时自动安装并配置一个 K3s Kubernetes 集群。
注意: 第一次启动时,Colima 需要下载虚拟机镜像,这个过程可能会花费几分钟,请耐心等待。
启动成功后,Colima 会自动配置 kubectl
,使其指向新创建的集群。
第四步:验证安装
现在,让我们来验证一下所有组件是否都正常工作了。
-
检查 Colima 状态:
colima status
你应该能看到
colima
实例正在运行 (running
)。 -
检查 Docker 是否连接:
docker ps
如果能成功执行并显示一个空的容器列表(表头),说明 Docker 客户端已经正确连接到 Colima 虚拟机中的 Docker 服务。
-
检查 Kubernetes 集群状态:
这是最重要的验证。kubectl cluster-info
你应该能看到 Kubernetes master 和 CoreDNS 的地址,表明
kubectl
已经成功连接到集群。 -
检查 Kubernetes 节点:
kubectl get nodes
你应该能看到一个名为
colima
的节点,并且其状态(STATUS)为Ready
。NAME STATUS ROLES AGE VERSION colima Ready control-plane,master 5m v1.28.x+k3s1
(版本号可能会有所不同)
至此,你的 Kubernetes 开发环境已经成功搭建!
第五步:(可选) 部署一个示例应用
为了确保一切都能正常工作,让我们部署一个简单的 Nginx Web 服务器。
-
创建 Nginx Deployment:
这个命令会创建一个 Deployment,并拉取 Nginx 镜像来运行一个 Pod。kubectl create deployment nginx --image=nginx
-
暴露 Nginx 服务:
为了能从你的 Mac 上访问这个 Nginx 服务,我们需要将它暴露出来。我们使用NodePort
类型来创建一个简单的端口映射。kubectl expose deployment nginx --port=80 --type=NodePort
-
查找访问端口:
执行以下命令查看服务信息,找到映射到你本机的端口。kubectl get service nginx
你会看到类似下面的输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx NodePort 10.43.151.123 <none> 80:31234/TCP 2m
注意
PORT(S)
这一列,80:31234/TCP
表示集群内部的 80 端口被映射到了节点的31234
端口。 -
访问 Nginx:
由于 Colima 将虚拟机的端口转发到了你的 Mac 本机 (localhost
),你可以直接通过localhost
和上一步找到的端口(在这个例子中是31234
)来访问。打开浏览器,访问
http://localhost:31234
,或者在终端中使用curl
:curl http://localhost:31234
如果看到 “Welcome to nginx!” 的 HTML 页面,恭喜你,整个流程都通了!
常用 Colima 命令
- 停止环境 (会保留虚拟机状态,下次启动快):
colima stop
- 再次启动环境:
colima start
- 彻底删除环境 (会删除虚拟机和所有数据,下次需要重新
colima start ...
):colima delete
- 查看所有 Colima 实例:
colima list
你现在已经拥有一个在 M3 Pro MacBook 上运行的、原生的、高性能的 Kubernetes 本地开发环境了。
解决异常
colima status
FATA[0000] error retrieving current runtime: empty value
–
kubectl get nodes
NAME STATUS ROLES AGE VERSION
colima Ready control-plane,master 6m24s v1.31.2+k3s1
kubectl get nodes
成功了。这说明你的 Kubernetes (K3s) 集群实际上正在后台正常运行。kubectl
工具能够成功连接到它,并获取节点信息。这是个好消息!colima status
失败了。错误信息FATA[0000] error retrieving current runtime: empty value
表明,colima
这个命令行工具本身无法找到或识别它应该管理的那个正在运行的虚拟机。
结论: 你的 Kubernetes 环境是好的,但是管理这个环境的 Colima 工具“失忆了”或它的状态文件损坏了。这就像你的汽车引擎在运转,但你手里的车钥匙失灵了,无法控制汽车。
为什么会发生这种情况?
这通常发生在以下几种情况:
- Colima 的后台进程被意外终止(例如,强制退出终端或系统异常关机)。
- Colima 的配置文件 (
~/.colima/
) 出现了轻微的损坏或不一致。 - Colima 版本更新后可能出现的罕见 bug。
如何修复?
我们有两种方案,从最简单、最无损的开始。
方案一:尝试重新连接和恢复(首选)
这个方案的目标是让 colima
CLI 重新“认识”那个已经在运行的虚拟机,而不需要销毁你的 Kubernetes 集群。
-
尝试再次执行
start
命令
colima start
命令是幂等的(idempotent),意思是如果它发现一个同名的实例已经在运行,它不会重新创建一个,而是会尝试连接到现有的实例并修复上下文。在终端里执行:
colima start
-
如果成功:它可能会输出一些信息,然后告诉你实例已经在运行。之后,再试一次
colima status
。colima status
如果这次能正确显示出
INFO[0000] colima is running
以及 CPU、内存等信息,那么问题就解决了!你的kubectl
会继续无缝工作。 -
如果失败:
colima start
可能还是会报错,或者卡住。如果这样,请继续方案二。
-
方案二:彻底重置 Colima 环境(保证解决问题)
如果方案一无效,那么最可靠的方法就是彻底删除当前的 Colima 环境并重新创建一个。
警告: 这个操作会删除当前 Kubernetes 集群里部署的所有应用和数据。但由于你刚开始安装,这应该不是问题。
-
停止并删除 Colima 实例
由于colima status
失效,colima stop
可能也无法工作。我们可以直接用delete
命令。这个命令更强大,会清理得更干净。colima delete
这个命令会尝试停止并删除虚拟机及其所有相关配置。
-
(如果上一步失败)手动清理
如果colima delete
也因为同样的原因报错,我们就需要手动清理。首先,找到并停止底层的 QEMU 进程。# 查找正在运行的 colima qemu 进程 ps aux | grep 'qemu-system-aarch64.*colima'# 你会看到一行类似... # your_user 12345 0.0 0.0 ... qemu-system-aarch64 ... -name colima ...# 使用 kill 命令停止它,把 12345 换成你看到的进程ID (PID) kill 12345
然后,彻底删除 Colima 的配置目录:
rm -rf ~/.colima
注意: 这个
rm -rf
命令会删除所有 Colima 的配置,请确保你没有其他重要的 Colima 配置文件。 -
重新创建环境
现在,你的系统已经回到了安装 Colima 之前的干净状态。我们只需重新执行最初的启动命令即可。colima start --cpu 4 --memory 8 --arch aarch64 --kubernetes
这将创建一个全新的、健康的环境。等待它完成。
-
最后验证
创建完成后,再次进行验证:colima status kubectl get nodes
这一次,两个命令应该都能成功返回正确的信息。