14.4 Kind - Kubernetes IN Docker
Kind (Kubernetes in Docker) 是一個使用 Docker 容器作為節點執行本地 Kubernetes 叢集的工具。主要用於測試 Kubernetes 本身,也非常適合本地開發和 CI 環境。
版本說明:本文件基於 Kind v0.31.0 編寫。Kind 會根據下載時的預設行為自動拉取對應的 Kubernetes 版本。建議定期更新 Kind 到最新版本以獲得最新的 Kubernetes 支援。詳見 Kind Releases。
14.4.1 為什麼選擇 Kind
Kind 相比其他本地叢集方案 (如 Minikube) 有以下顯著優勢:
- 輕量便捷:只要有 Docker 環境即可,無需額外虛擬機。
- 多叢集支援:可以輕鬆在本地啟動多個叢集。
- 多版本支援:支援指定 Kubernetes 版本進行測試。
- HA 支援:支援模擬高可用叢集 (多 Control Plane)。
14.4.2 安裝 Kind
Kind 是一個二進位檔案,放到 PATH 中即可使用。以下是不同系統的安裝方法。
macOS
brew install kind
Linux / Windows
可以下載二進位檔案:
# Linux AMD64
# 注意:v0.31.0 為編寫本文件時的最新版本,請根據需要替換為當前版本
# 參見 https://github.com/kubernetes-sigs/kind/releases
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.31.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
14.4.3 建立叢集
最簡單的建立方式:
kind create cluster
指定叢集名稱:
kind create cluster --name my-cluster
14.4.4 與叢集互動
Kind 會自動將 kubeconfig 合併到 ~/.kube/config。
kubectl cluster-info --context kind-kind
kubectl get nodes
14.4.5 高階用法:設定叢集
建立一個 kind-config.yaml 來定製叢集,例如對映連接埠到宿主機:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 80
hostPort: 8080
protocol: TCP
- role: worker
- role: worker
應用設定:
kind create cluster --config kind-config.yaml
14.4.6 刪除叢集
kind delete cluster