使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群( 二 )

Usage: kind [command]Available Commands: build Build one of [base-image, node-image] create Creates one of [cluster] delete Deletes one of [cluster] export exports one of [logs] get Gets one of [clusters, nodes, kubeconfig-path] help Help about any command load Loads images into nodes version prints the kind CLI versionFlags: -h, --help help for kind --loglevel string logrus log level [panic, fatal, error, warning, info, debug] (default "warning") --version version for kindUse "kind [command] --help" for more information about a command.简单说下几个比较常用选项的含义:

  • build:用来从Kubernetes源代码构建一个新的镜像 。
  • create:创建一个Kubernetes集群 。
  • delete:删除一个Kubernetes集群 。
  • get:可用来查看当前集群、节点信息以及Kubectl配置文件的地址 。
  • load:从宿主机向Kubernetes节点内导入镜像 。
 
使用 Kind 创建 Kubernetes 集群搭建一个单节点集群搭建单节点集群是 Kind最基础的功能,当然使用起来也很简单,仅需一条指令即可完成 。
$ kind create cluster --name my-clusterCreating cluster "my-cluster" ... ? Ensuring node image (kindest/node:v1.15.3) ? Preparing nodes ? Creating kubeadm config ? Starting control-plane ?Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster")"kubectl cluster-info
以上命令中 --name是可选参数 。如果不指定,默认创建出来的集群名字为kind
使用默认安装的方式时,我们没有指定任何配置文件 。从安装过程的输出来看,一共分为 4 步:
  • 检查本地环境是否存在一个基础的安装镜像,默认是 kindest/node:v1.15.3,该镜像里面包含了所有需要安装的东西,包括:kubectlkubeadmkubelet的二进制文件,以及安装对应版本Kubernetes所需要的镜像 。
  • 准备 Kubernetes节点,主要就是启动容器、解压镜像这类的操作 。
  • 建立对应的 kubeadm的配置,完成之后就通过kubeadm进行安装 。安装完成后还会做一些清理操作,比如:删掉主节点上的污点,否则对于没有容忍的Pod无法完成部署 。
  • 上面所有操作都完成后,就成功启动了一个 Kubernetes集群并输出一些操作集群的提示信息 。
  1. 默认情况下,Kind会先下载kindest/node:v1.15.3镜像 。如果你想指定不同版本,可以使用--image参数,类似这样:kind create cluster --image kindest/node:v1.15.3
  2. kindest/node这个镜像目前托管于 Docker Hub 上,下载时可能会较慢 。同样的问题Kind进行集群的创建也是存在的,Kind实际使用Kubeadm进行集群的创建 。对Kubeadm有所了解的同学都知道它默认使用的镜像在国内是不能访问的,所以一样需要自行解决网络问题 。
  3. 如果你存在上面说的网络问题,最好配置一个国内的加速器或者镜像源 。如果你还不知道如何配置加速器和镜像源可以参考:「Docker / Kubernetes 镜像源不可用,教你几招搞定它!」和 「 Docker 下使用 DaoCloud / 阿里云镜像加速」两篇文章 。
接下来,我们根据上面命令执行完后,输出的提示信息进行操作来验证一下集群是否部署成功 。
# 获取指定集群的配置文件所在的路径$ export KUBECONFIG="$(kind get kubeconfig-path --name="my-cluster")"$ kubectl cluster-infoKubernetes master is running at https://localhost:34458KubeDNS is running at https://localhost:34458/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.$ kubectl get nodesNAME STATUS ROLES AGE VERSIONmy-cluster-control-plane Ready master 2m v1.15.3


推荐阅读