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
這一次,兩個命令應該都能成功返回正確的信息。