使用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的开发/测试环境。

相关文章
相关标签/搜索