什么是 Kind
Kind(Kubernetes in Docker) 是一个 Kubernetes 孵化项目,Kind 是一套开箱即用的 Kubernetes 环境搭建方案。顾名思义,就是将 Kubernetes 所需要的所有组件,全部部署在一个 Docker 容器中,可以很方便的搭建 Kubernetes 集群。
Kind 已经广泛的应用于 Kubernetes 上游及相关项目的 CI 环境中,官方文档中也把 Kind 作为一种本地集群搭建的工www.58yuanyou.com具推荐给大家。
项目地址:https://github.com/kubernetes-sigs/kind
Kind 可以做什么?
- 快速创建一个或多个 Kubernetes 集群
- 支持部署高可用的 Kubernetes 集群
- 支持从源码构建并部署一个 Kubernetes 集群
- 可以快速低成本体验一个最新的 Kubernetes 集群,并支持 Kubernetes 的绝大部分功能
- 支持本地离线运行一个多节点集群
Kind 有哪些优势?
- 最小的安装依赖,仅需要安装 Docker 即可
- 使用方法简单,只需 Kind Cli 工具即可快速创建集群
- 使用容器来模似 Kubernetes 节点
- 内部使用 Kubeadm 的官方主流部署工具
- 通过了 CNCF 官方的 K8S Conformance 测试
Kind 是如何工作的?
Kind 使用容器来模拟每一个 Kubernetes 节点,并在容器里面运行 Systemd 。容器里的 Systemd 托管了 Kubelet 和 Containerd ,然后容器内部的 Kubelet 把其它 Kubernet//www.58yuanyou.comes 组件:Kube-Apiserver 、Etcd 、CNI 等等组件运行起来。
Kind 内部使用了 Kubeadm 这个工具来做集群的部署,包括高可用集群也是借助 Kubeadm 提供的特性来完成的。在高用集群下还会额外部署了一个 Nginx 来提供负载均衡 VIP。
安装 Kind安装 Kind 依赖组件
Kind 把部署 Kubernetes 环境的依赖降低到了最小,仅需要机器安装 Docker 即可。
- 安装 Docker
这里以 Linux 系统为例:
更多平台的安装方法可参考官方文档:https://docs.docker.com/install/
- 安装 Kubectl
如果你需要通过命令行管理集群,则需要安装 Kubectl。
这里以 Linux 系统为例:
更多平台的安装方法可参考官方文档:https://kubernetes.io/docs/tasks/tools/install-kubectl/#inst//www.58yuanyou.comall-kubectl
安装 Kind
Kind 使用 Golang 进行开发,原生支持良好的跨平台特性,通常只需要直接下载构建好的二进制文件就可使用。
- 通过二进制安装
- Linux
- Windows
更多平台的安装方法可参考官方文档:https://kind.sigs.k8s.io/docs/user/quick-start/
- 通过源码安装
如果本地环境已经配置好 Golang (1.11+) 的开发环境,你也可以直接通过源码进行安装。
运行完上述命令后,会将 Kind 的可执行文件放到 $GOPATH/bin 目录内。为了方便使用,你需要将此目录加入到 $PATH 中。
使用 Kind
安装完成之后,我们可以来看看 Kind 支持哪些命令行操作。
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 commandload Loads images into nodesversion prints the kind CLI version
Flags:-h, --help help for kind--loglevel string logrus log level [panic, fatal, error, warning, info, debug] (default "warning")--version version for kind
Use "kind [command] --help" for more information about a command.
简单说下几个比较常用选项的含义:
- build:用来从 Kubernetes 源代码构建一个新的镜像。
- create:创建一个 Kubernetes 集群。
- delete:删除一个 Kubernetes 集群。
- get:可用来查看当前集群、节点信息以及 Kubectl 配置文件的地址。
- load:从宿主机向 Kubernetes 节点内导入镜像。
搭建单节点集群是 Kind 最基础的功能,当然使用起来也很简单,仅需一条指令即可完成。