簡 介
kind是另一個Kubernetes SIG項目,但它與minikube有很大差別。它可以将叢集遷移到Docker容器中,這與生成虛拟機相比,啟動速度大大加快。簡而言之,kind是一個使用Docker容器節點運作本地Kubernetes叢集的工具(CLI)。
接下來,我們開始吧!
前期準備
想要順利完成本教程,你需要在本地系統中準備好以下程式:
- Go
- 需要運作的Docker服務
安 裝
使用以下指令下載下傳和安裝kind二進制檔案:
GO111MODULE=”on” go get sigs.k8s.io/[email protected]
確定kind二進制檔案是存在的
> kind version
kind v0.8.1 go1.14.2 darwin/amd64
現在,我們應該能夠使用
kind
CLI來啟動一個Kubernetes叢集:
Usage:
kind [command]Available Commands:
build Build one of [node-image]
completion Output shell completion code for the specified shell
create Creates one of [cluster]
delete Deletes one of [cluster]
export Exports one of [kubeconfig, logs]
get Gets one of [clusters, nodes, kubeconfig]
help Help about any command
load Loads images into nodes
version Prints the kind CLI version
在本文中,我們将聚焦于
create
、
get
和
delete
指令。
建立一個叢集
執行以下指令即可建立一個叢集:
kind create cluster
> kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.18.2) ð¼
✓ Preparing nodes ð¦
✓ Writing configuration ð
✓ Starting control-plane ð¹️
✓ Installing CNI ð
✓ Installing StorageClass ð¾
Set kubectl context to "kind-kind"
You can now use your cluster with:kubectl cluster-info --context kind-kind Have a nice day! ð
将通過拉取最新的Kubernetes節點(v 1.18.2)來建立一個Kubernetes叢集。剛剛我們已經建立了一個v 1.18.2的Kubernetes叢集。
在建立叢集的過程中如果我們沒有
--name
參數,那麼叢集名稱将會預設設定為
kind
。
建立特定版本的K8S叢集
我們可以傳
--image
參數來部署一個特定版本的Kubernetes叢集。
使用的指令為:
kind create cluster --image kindest/node:v1.15.6
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.15.6) ð¼
✓ Preparing nodes ð¦
✓ Writing configuration ð
✓ Starting control-plane ð¹️
✓ Installing CNI ð
✓ Installing StorageClass ð¾
Set kubectl context to "kind-kind"
You can now use your cluster with:kubectl cluster-info --context kind-kind Have a nice day! ð
列出部署的叢集
輸入指令:
kind get clusters
> kind get clusters
kind
kind-1.15.6
這應該列出我們此前建立的兩個不同K8S版本的叢集。
為kubectl設定上下文
建立叢集之後,kubectl會指出最近建立的K8S叢集。
讓我們來檢查一下所有可用的上下文。
> kubectl config get-contexts
CURRENT NAME CLUSTER
kind-kind kind-kind
* kind-kind-1.15.6 kind-kind-1.15.6
從輸出中,我們可以得到結論,kubectl上下文目前已經被設定為最新的叢集,即kind-1.15.6。(上下文名稱是以kind為字首的)
要将kubectl上下文設定為版本是1.18.2的
kind
叢集,我們需要進行如下操作:
> kubectl config set-context kind-kind
Context "kind-kind" modified.
要驗證kubectl是否指向正确的叢集,我們需要檢查節點:
> kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-1.18.2-control-plane Ready master 8m20s v1.18.2
删除某個叢集
要删除一個特定的群集,可以在
--name
參數中把叢集名稱傳遞給删除指令。
指令為:
kind delete cluster --name kind
> kind delete cluster --name kind
Deleting cluster "kind" ...
删除所有叢集
如果你想一次性删除所有叢集,請執行:
kind delete clusters –all
> kind delete clusters --all
Deleted clusters: ["kind-1.15.6"]
kind的優勢是什麼?
kind(Kubernetes in Docker)是一個基于Docker建構的Kubernetes叢集的工具。它經過CNCF認證,并且支援多節點叢集,包括高可用叢集。并且支援Linux、macOS以及Windows作業系統,操作簡單,學習成本低,非常适合用來在本地搭建基于Kubernetes的開發/測試環境。