云原生核心技術 (6/12): K8s 從零到一:使用 Minikube/kind 在本地搭建你的第一個 K8s 集群

摘要

本文是一篇保姆級的實踐指南,旨在解決學習 Kubernetes (K8s) 時“環境搭建難”的頭號痛點。我們將對比分析 Minikube、kind、K3s 和 Docker Desktop Kubernetes 等主流本地 K8s 環境方案的優缺點,幫助你選擇最適合自己的工具。隨后,文章將提供詳細的分步教程,手把手帶你使用 Minikubekind (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

你應該會看到一個節點,名字可能是 minikubekind-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
  • 通過 Minikubekind 成功啟動了一個 K8s 集群。
  • 學會了使用 kubectl get nodes 等命令來驗證集群狀態。

現在,游樂場的設施已經建好,是時候把我們的“玩具”(應用容器)放進去了。從下一篇開始,我們將正式學習如何在 K8s 中部署和管理應用。

下一篇預告:【云原生核心技術 (7/12): K8s 核心概念白話解讀(上):Pod 和 Deployment 究竟是什么?】

我們將深入 K8s 的世界,認識它最核心、最基本的兩個概念:Pod (容器的“外衣”) 和 Deployment (應用的“守護神”)。你將學會如何編寫第一個 YAML 文件,在 K8s 中部署你的第一個應用。真正的 K8s 之旅,即將啟程!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84470.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線程運行的現象和相關指令

一.多個線程運行的現象 1.規律 交替執行誰先誰后,不由我們控制 2.舉例 Slf4j(topic "c.Test6") public class Test06 {public static void main(String[] args) {//創建并運行線程1new Thread(()->{while (true){log.debug("running");…

Windows網絡配置避坑指南

Windows網絡配置避坑指南 一、網絡配置是什么?防火墻的“信任開關”二、何時需要手動切換網絡配置文件??必需切換的場景高危!絕對禁止選錯的兩個場景三、3種切換指南(Win10/11通用)方法1:圖形化操作(推薦小白)?方法2:用PowerShell強制切換方法3:注冊表底層修改(應…

基于ThinkPHP8.*的后臺管理框架--Veitool框架學習使用

基于ThinkPHP8.*的后臺管理框架--Veitool框架學習使用 一、安裝部署二、目錄結構 一、安裝部署 環境要求 Linux、Unix、macOS、Windows Nginx、Apache、IIS PHP > 8.1.0 MySQL > 5.7 下載地址 官網下載:https://www.veitool.com/download 境內倉庫&#xff…

Java多線程通信核心機制詳解

在Java中,多線程通信與協作主要通過以下幾種核心機制實現,每種方式適用于不同的并發場景: 🔄 一、共享變量同步控制(基礎方式) // 使用volatile保證可見性 private volatile boolean flag false;// 線程A…

Django知識-視圖

視圖設置 一個視圖函數,簡稱視圖,是一個簡單的Python 函數,它接受Web請求并且返回Web響應。代碼寫在哪里也無所謂,只要它在你的應用目錄下面。但是為了方便視圖一般被定義在“應用/views.py”文件中。 視圖的第一個參數必須為Ht…

DevSecOps實踐:CI/CD流水線集成動態安全測試(DAST)工具

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 讓安全掃描成為代碼交付的“守門員” 引言:安全漏洞的代價,越早發現越好 在軟件開發領域,安全漏洞的修復成本隨著開發…

使用CSDN作為Markdown編輯器圖床

使用CSDN作為Markdown編輯器圖床 一、CSDN圖床的優勢 MD編輯器在撰寫文檔時功能強大,但插入圖片需借助圖床。CSDN作為免費圖床,操作簡單且穩定性高,適合日常使用。只需將圖片上傳至CSDN的MD編輯器,即可獲取可直接訪問的圖片地址…

python打卡day51

復習日 作業:day43的時候我們安排大家對自己找的數據集用簡單cnn訓練,現在可以嘗試下借助這幾天的知識來實現精度的進一步提高 還是繼續用上次的街頭食物分類數據集,既然已經統一圖片尺寸到了140x140,所以這次選用輕量化模型 Mobi…

Vuex 自動化生成工具

Vuex 自動化生成工具需求文檔 1. 需求背景 為提升前端開發效率,減少重復代碼編寫,需開發一個自動化工具,根據輸入參數自動生成完整的 Vuex 存儲模塊(包括api.js,mutations.js,actions.js,gette…

深入淺出多路歸并:原理、實現與實戰案例解析

文章目錄 二路歸并多路歸并方法一:指針遍歷(多指針比較法)方法二:小根堆法(最小堆歸并) 實際場景外部排序 經典題目丑數Ⅱ方法一:三指針法方法二:優先隊列法(K路歸并&…

Koji構建系統宏定義注入與Tag體系解析

在Red Hat生態的持續集成鏈條中,Koji作為核心構建系統,其靈活的宏定義機制與精密的Tag體系是保障軟件包高效流轉的關鍵。本文將系統闡述在既有構建目標中注入宏定義的技術路徑,并深度解析Koji中Target與Tag的概念架構及其版本演進差異。 一、…

【Kubernetes】架構與原理:核心概念、組件協同及容器化部署解析

文章目錄 一、前言二、為什么需要 Kubernetes1. 傳統部署方法2. 虛擬化部署3. 容器化部署Ⅰ. 基本概念Ⅱ. 容器編排的必要性Ⅲ. 容器化部署的優勢4. k8s 的歷史與發展三、Kubernetes 基本概念1. k8s 核心架構解析Ⅰ. 控制平面與工作節點Ⅱ. 各組件協同工作原理2. k8s 核心概念Ⅰ…

Pip Manager本地Python包管理器

在Python開發領域,包管理是每個開發者日常工作中不可或缺的一部分。雖然命令行工具pip功能強大,但對于初學者和非技術背景的用戶來說,命令行界面往往顯得不夠友好。如果使用PyCharm,則可以非常簡單的管理安裝的Python包&#xff1…

vscode界面設置透明度--插件Glasslt-VSC

【快捷鍵:透明度提高(CtrAlt Z),透明度降低(CtrAlt C)】

OPENCV形態學基礎之一膨脹

一.膨脹的原理 數學表達式:dst(x,y) dilate(src(x,y)) max(x,y)src(xx,yy) 膨脹是圖像形態學的基本功能之一,膨脹顧名思義就是求圖像的局部最大值操作,它的數學表達式是dst(x,y) dilate(src(x,y)) max(x,y)src(xx,yy)。 從數學的角度來看…

徹底禁用Windows Defender通知和圖標

方法 一:通過注冊表強制隱藏 Defender 圖標(永久生效)?? (適用于徹底隱藏圖標,但需謹慎操作) ??打開注冊表編輯器?? 按 Win R,輸入 regedit 回車。 ??導航到 Defender 相關注冊表項?…

Kafka 2.7.0 單節點安裝與啟動教程(適配 JDK 1.8)

1. 下載與解壓 官方下載 Kafka 2.7.0 https://archive.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz 上傳到虛擬機(如 /home/wang/soft/kafka)解壓: tar -zxvf kafka_2.13-2.7.0.tgz 2. 配置環境變量(可選,便…

23、Python字符串核心機制解析:駐留原理、對象比較與成員檢測實戰

適合人群:零基礎自學者 | 編程小白快速入門 閱讀時長:約5分鐘 文章目錄 一、問題:Python的字符串駐留機制?1、例子1:字符串駐留現象2、答案:(1)字符串駐留 二、問題:Pyth…

pikachu靶場通關筆記22-2 SQL注入05-2-update注入(報錯法)

目錄 一、SQL注入 二、update注入 三、報錯型注入 四、源碼分析 1、代碼審計 2、滲透思路 五、滲透實戰 1、滲透準備 2、獲取數據庫名database 3、獲取表名table 4、獲取列名column 5、獲取字段 本系列為通過《pikachu靶場通關筆記》的SQL注入關卡(共10關&#xff…

【prometheus+Grafana篇】基于Prometheus+Grafana實現Redis數據庫的監控與可視化

💫《博主主頁》: 🔎 CSDN主頁 🔎 IF Club社區主頁 🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(MongoDB)有了…