天天看點

使用kind快速建立本地叢集

簡 介

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