摘要
本文是一篇保姆級的實踐指南,旨在解決學習 Kubernetes (K8s) 時“環境搭建難”的頭號痛點。我們將對比分析 Minikube、kind、K3s 和 Docker Desktop Kubernetes 等主流本地 K8s 環境方案的優缺點,幫助你選擇最適合自己的工具。隨后,文章將提供詳細的分步教程,手把手帶你使用 Minikube 和 kind (Kubernetes in Docker) 這兩種最流行的方式,在自己的 Windows、macOS 或 Linux 電腦上,快速搭建起一個功能完備的單節點 K8s 集群。最后,你將學會使用 kubectl
命令行工具來驗證集群狀態,為后續的 K8s 實戰打下堅實的基礎。
引言:你的 K8s 游樂場
在上一篇文章中,我們領略了 Kubernetes 的宏偉藍圖和強大能力。你可能已經摩拳擦掌,迫不及待地想在 K8s 上部署自己的應用了。但是,一個“攔路虎”擺在了面前:我沒有 K8s 集群啊!
在生產環境中搭建一個高可用的 K8s 集群是一項非常復雜的工作,需要多臺服務器、復雜的網絡配置和專業的運維知識。這對于初學者來說,門檻太高了。
幸運的是,社區提供了許多優秀的工具,可以讓我們在自己的個人電腦上,輕松模擬出一個功能完整的 K8s 集群,作為我們的學習和實驗“游樂場”。
今天,我們將告別一切復雜的理論,專注動手實踐。本文的目標只有一個:讓你在幾分鐘內,擁有一個屬于自己的、可以任意折騰的 K8s 集群!
一、本地 K8s 環境方案大比拼
在開始之前,我們先快速了解一下幾個主流的本地 K8s 方案,以便你做出最適合自己的選擇。
工具 | 優點 | 缺點 | 推薦場景 |
---|---|---|---|
Minikube | 功能最全,最接近真實集群,社區成熟,文檔豐富。支持多種驅動(VM, Docker)。 | 相對較重,啟動稍慢,資源占用稍高。 | 強烈推薦初學者。提供了最完整的 K8s 體驗,且有豐富的插件(如 Ingress, Dashboard)。 |
kind (Kubernetes in Docker) | 啟動極快,資源占用低,純粹的 Docker 實現,方便在 CI/CD 中使用。 | 默認功能相對精簡,需要手動開啟一些功能。 | 熟悉 Docker,追求快速啟動和銷毀集群的開發者;CI/CD 自動化測試。 |
K3s | 極度輕量,二進制文件僅幾十MB,資源消耗極低,專為邊緣計算和物聯網設計。 | 為了輕量裁剪了一些非核心功能。 | 資源極其有限的環境(如樹莓派),或只想快速體驗 K8s 核心功能的場景。 |
Docker Desktop | 一鍵開啟,與 Docker 無縫集成,對 Windows/macOS 用戶極其友好。 | 定制性差,黑盒,資源占用較高,有時不穩定。 | 已經安裝了 Docker Desktop,且不想折騰其他工具的用戶。 |
本文將重點介紹 Minikube 和 kind,因為它們是目前社區最主流、最靈活的兩種選擇。 你可以任選其一進行學習。
二、安裝 “遙控器”:kubectl
無論你選擇哪種 K8s 集群,我們都需要一個“遙控器”來和它交互。這個官方的命令行工具就是 kubectl
。
安裝 kubectl
官方文檔提供了非常詳細的安裝指南:Install kubectl
-
macOS:
# 使用 Homebrew (推薦) brew install kubectl # 或者手動安裝 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
-
Windows:
# 使用 Chocolatey (推薦) choco install kubernetes-cli # 或者手動安裝 (在 PowerShell 中執行) curl.exe -LO "https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe" # 將 kubectl.exe 移動到一個在你的 PATH 環境變量中的目錄
-
Linux:
# 手動安裝 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
安裝完成后,運行 kubectl version --client
,如果能看到版本信息,說明 kubectl
安裝成功。
三、實戰一:使用 Minikube 搭建 K8s 集群
Minikube 會在你的機器上創建一個虛擬機或一個 Docker 容器作為 K8s 節點。對于已經安裝了 Docker Desktop 的用戶,使用 Docker 驅動是最方便的。
1. 安裝 Minikube
- macOS:
brew install minikube
- Windows:
# 使用 Chocolatey choco install minikube
- Linux:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
2. 啟動你的 Minikube 集群
打開終端,執行以下命令:
minikube start --driver=docker
--driver=docker
: 明確告訴 Minikube 使用 Docker 作為底層驅動。這是推薦的方式。如果你沒有安裝 Docker,Minikube 可能會嘗試使用其他虛擬機驅動(如 VirtualBox, Hyper-V)。
第一次啟動會比較慢,因為它需要下載 K8s 組件的鏡像。請耐心等待。如有些網絡問題需要自行解決。
當看到 😄 Done! kubectl is now configured to use "minikube" cluster...
字樣時,就表示你的集群已經啟動成功了!
3. 管理你的 Minikube 集群
- 查看狀態:
minikube status
- 暫停集群:
minikube pause
- 恢復集群:
minikube unpause
- 停止集群 (保留配置):
minikube stop
- 刪除集群 (徹底清理):
minikube delete
四、實戰二:使用 kind (Kubernetes in Docker) 搭建 K8s 集群
kind 的理念是“用 Docker 容器來運行 K8s 節點”,所以它的前提是你必須已經安裝了 Docker。
1. 安裝 kind
- macOS:
brew install kind
- Windows:
choco install kind
- Linux:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind
2. 啟動你的 kind 集群
啟動 kind 集群非常簡單,只需要一條命令:
kind create cluster
kind 會拉取一個特殊的“節點鏡像”,然后用它啟動一個 Docker 容器來模擬 K8s 的控制平面節點。速度非常快,通常一兩分鐘內就能完成。
默認創建的集群名為 kind
。你也可以指定名字:kind create cluster --name my-k8s-cluster
3. 管理你的 kind 集群
- 查看已有集群:
kind get clusters
- 刪除集群:
kind delete cluster
(默認刪除名為kind
的集群) - 刪除指定集群:
kind delete cluster --name my-k8s-cluster
五、驗證你的 K8s 集群
無論你使用 Minikube 還是 kind,一旦集群啟動成功,它們都會自動配置好 kubectl
,讓其指向新創建的集群。現在,讓我們來用 kubectl
這個“遙控器”來檢查一下我們的“游樂場”。
1. 查看集群信息
kubectl cluster-info
你會看到 K8s Master (控制平面) 和 CoreDNS 的地址,這表明你的 kubectl
已經能和集群正常通信了。
2. 查看集群中的所有節點
kubectl get nodes
你應該會看到一個節點,名字可能是 minikube
或 kind-control-plane
,其 STATUS
應該是 Ready
。
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 10m v1.27.4
# 或者
kind-control-plane Ready control-plane 2m v1.27.3
3. (可選) 打開 K8s Dashboard (僅限 Minikube)
Minikube 有一個非常棒的附加功能,可以一鍵開啟圖形化的管理界面 Dashboard。
minikube dashboard
這條命令會自動在你的瀏覽器中打開一個網頁,你可以在上面直觀地看到集群的各種資源和狀態。
總結與預告
恭喜你!你已經成功地在自己的電腦上搭建起了一個功能完備的 Kubernetes 集群,并且學會了使用 kubectl
來與它進行最基本的交互。你不再是 K8s 的門外漢,而是擁有了一片可以自由探索的“試驗田”。
今天我們完成了:
- 對比并選擇了適合自己的本地 K8s 方案。
- 安裝了核心命令行工具
kubectl
。 - 通過 Minikube 或 kind 成功啟動了一個 K8s 集群。
- 學會了使用
kubectl get nodes
等命令來驗證集群狀態。
現在,游樂場的設施已經建好,是時候把我們的“玩具”(應用容器)放進去了。從下一篇開始,我們將正式學習如何在 K8s 中部署和管理應用。
下一篇預告:【云原生核心技術 (7/12): K8s 核心概念白話解讀(上):Pod 和 Deployment 究竟是什么?】
我們將深入 K8s 的世界,認識它最核心、最基本的兩個概念:Pod (容器的“外衣”) 和 Deployment (應用的“守護神”)。你將學會如何編寫第一個 YAML 文件,在 K8s 中部署你的第一個應用。真正的 K8s 之旅,即將啟程!