使用kind快速建立本地集羣

簡 介

kind是另外一個Kubernetes SIG項目,但它與minikube有很大區別。它能夠將集羣遷移到Docker容器中,這與生成虛擬機相比,啓動速度大大加快。簡而言之,kind是一個使用Docker容器節點運行本地Kubernetes集羣的工具(CLI)。node

接下來,咱們開始吧!shell

前期準備

想要順利完成本教程,你須要在本地系統中準備好如下程序:工具

  • Go學習

  • 須要運行的Docker服務測試

安 裝

使用如下命令下載和安裝kind二進制文件:ui

GO111MODULE=」on」 go get sigs.k8s.io/kind@v0.8.1

確保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

在本文中,咱們將聚焦於creategetdelete命令。code

建立一個集羣

執行如下命令便可建立一個集羣:教程

kind create clusterci

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

相關文章
相關標籤/搜索