跳至內容

Kind

Docker 容器內的輕量級 Kubernetes

分類 程式開發 / 基礎設施
開發廠商 The Kubernetes Authors (SIG Testing)
Stars
0
Forks
0
License
APACHE LICENSE 2.0
Version
v0.31.0
Update
OS

產品說明

Kind (Kubernetes in Docker) 是一套使用 Docker 容器作為「節點 (Node)」來運行本地 Kubernetes 叢集的工具。它的誕生初衷是為了測試 Kubernetes 本身,但由於其極致的輕量化與快速啟動特性,現已成為開發者在本地端進行 K8s 開發、或在 CI/CD 流程中進行整合測試的首選方案。

與 Minikube 相比,Kind 不需要依賴重型的虛擬機 (VM),而是巧妙地利用 Docker 容器來模擬控制平面 (Control Plane) 與工作節點 (Worker Node)。這意味著只要你的電腦能跑 Docker,就能在幾秒鐘內啟動一個標準的、通過 CNCF 認證的 Kubernetes 叢集。它支援多節點 (Multi-node) 架構與高可用性 (HA) 設定,並且支援將本地編譯的 Docker Image 直接載入叢集,無需推送到遠端 Registry,大幅加速開發迴圈。

核心特色:

  • 極速啟動:利用容器技術,通常能在 30 秒至 1 分鐘內完成叢集初始化。
  • 低資源消耗:相較於 VM 方案,記憶體與 CPU 的開銷更低。
  • CI/CD 友善:設計上易於整合至 GitHub Actions、GitLab CI 等自動化流程中。
  • 本地映像檔載入:支援 kind load docker-image 指令,直接將本地 Image 注入叢集,省去 Push/Pull 的時間。

常用指令

Kind 是一款純命令列工具 (CLI),操作邏輯簡單直觀。

叢集生命週期管理

# 建立一個預設名稱為 "kind" 的叢集
kind create cluster

# 建立一個指定名稱的叢集 (例如 my-cluster)
kind create cluster --name my-cluster

# 刪除預設叢集
kind delete cluster
指令 功能說明 範例
create cluster 建立叢集 啟動一個新的 K8s 環境
delete cluster 刪除叢集 移除叢集並清理相關 Docker 容器
get clusters 列出叢集 顯示目前已建立的所有 Kind 叢集名稱
get nodes 列出節點 顯示叢集內的容器節點資訊
load docker-image 載入映像檔 將本地 Docker Image 載入至 Kind 節點中
export kubeconfig 匯出設定 匯出 Kubeconfig 以供 kubectl 使用

進階技巧

  • 多節點叢集配置:
    透過一份簡單的 YAML 設定檔,即可模擬真實的多節點環境(例如 1 個 Master + 2 個 Worker)。

    config.yaml:

    kind: Cluster
    apiVersion: kind.x-k8s.io/v1alpha4
    nodes:
    - role: control-plane
    - role: worker
    - role: worker
    

    執行指令:

    kind create cluster --config config.yaml
    
  • 載入本地 Image:
    開發時最常用的功能。當你在本地 docker build 好了一個 Image 後,不需要 Push 到 Docker Hub,直接載入即可:

    docker build -t my-app:latest .
    kind load docker-image my-app:latest
    
  • Ingress 支援:
    Kind 支援透過 extraPortMappings 將容器內的 Ingress Controller Port 對應到本機,讓你能在瀏覽器中直接存取叢集內的服務。


操作介面

Kind 本身是 CLI 工具,執行過程會顯示清晰的進度與檢查項目。下圖展示了建立叢集時的終端機畫面。