使用kind快速建立本地叢集

簡 介

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的開發/測試環境。