簡 介
kind是另一個Kubernetes SIG專案,但它與minikube有很大區別。它可以將叢集遷移到Docker容器中,這與生成虛擬機器相比,啟動速度大大加快。簡而言之,kind是一個使用Docker容器節點執行本地Kubernetes叢集的工具(CLI)。
接下來,我們開始吧!
前期準備
想要順利完成本教程,你需要在本地系統中準備好以下程式:
Go
需要執行的Docker服務
安 裝
使用以下命令下載和安裝kind二進位制檔案:
GO111MODULE=”on” go get sigs。k8s。io/kind@v0。8。1
確保kind二進位制檔案是存在的
> kind versionkind 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 clusterCreating 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
> kind create cluster ——image kindest/node:v1。15。6 ——name kind-1。15。6Creating 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 clusterskindkind-1。15。6
這應該列出我們此前建立的兩個不同K8S版本的叢集。
為kubectl設定上下文
建立叢集之後,kubectl會指出最近建立的K8S叢集。
讓我們來檢查一下所有可用的上下文。
> kubectl config get-contextsCURRENT 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 nodesNAME STATUS ROLES AGE VERSIONkind-1。18。2-control-plane Ready master 8m20s v1。18。2
刪除某個叢集
要刪除一個特定的群集,可以在——name引數中把叢集名稱傳遞給刪除命令。
命令為:kind delete cluster ——name kind
> kind delete cluster ——name kindDeleting cluster “kind” 。。。
刪除所有叢集
如果你想一次性刪除所有叢集,請執行:
kind delete clusters –all
> kind delete clusters ——allDeleted clusters: [“kind-1。15。6”]
kind的優勢是什麼?
kind(Kubernetes in Docker)是一個基於Docker構建的Kubernetes叢集的工具。它經過CNCF認證,並且支援多節點叢集,包括高可用叢集。並且支援Linux、macOS以及Windows作業系統,操作簡單,學習成本低,非常適合用來在本地搭建基於Kubernetes的開發/測試環境。